我有以下文件:
funcs.hpp:
#include "iostream"
void func(void);
funcs.cpp:
#include "iostream"
#include "funcs.hpp"
void func(void)
{
std::cout<< "Running func" << std::endl;
};
main.cpp:
#include "iostream"
extern void func(void);
int main(void)
{
std::cout<< "call func" << std::endl;
func();
return 1;
}
我通过命令将 funcs.cpp 编译到共享库中:
g++ -fPIC -shared funcs.cpp -o libfuncs.so
然后我打电话
g++ main.cpp -L. -llibfuncs -o main.o
将共享库链接到 main 并编译,但出现错误:
/usr/bin/ld: cannot find -llibfuncs: No such file or directory
collect2: error: ld returned 1 exit status
我完全按照我在网上看到的例子,我不知道发生了什么。
所以问题是gcc假设lib将被添加到库名称中,你需要删除lib部分,正确的命令是:
g++ main.cpp -L. -lfuncs -o main.o
我认为这没有很好的记录。