链接器找不到g++编译的共享库

问题描述 投票:0回答:1

我有以下文件:

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

我完全按照我在网上看到的例子,我不知道发生了什么。

g++ ld
1个回答
0
投票

所以问题是gcc假设lib将被添加到库名称中,你需要删除lib部分,正确的命令是:

g++ main.cpp -L. -lfuncs -o main.o

我认为这没有很好的记录。

© www.soinside.com 2019 - 2024. All rights reserved.