/usr/bin/ld: cannot find -lconfig++



我认为这是一个常见的问题,但我想我已经尽力了。当我尝试编译这个文件时:

g++ -o build/opt/fftoggle --static build/opt/fftoggle.o build/opt/config.o build/opt/galloc.o build/opt/log.o build/opt/pin_cmd.o -lconfig++ -lpthread

我得到/usr/bin/ld: cannot find -lconfig++

我认为这与libconfig++库有关,我通过运行ld -lconfig++ --verbose发现它在/usr/lib64/libconfig++.so

这是我运行ld -lconfig++ --verbose

时得到的结果
attempt to open //usr/x86_64-redhat-linux/lib64/libconfig++.a failed
attempt to open //usr/lib64/libconfig++.so succeeded
-lconfig++ (//usr/lib64/libconfig++.so)
libstdc++.so.6 needed by //usr/lib64/libconfig++.so
found libstdc++.so.6 at /usr/local/lib64//libstdc++.so.6
libm.so.6 needed by //usr/lib64/libconfig++.so
found libm.so.6 at /usr/lib64/libm.so.6
libc.so.6 needed by //usr/lib64/libconfig++.so
found libc.so.6 at /usr/lib64/libc.so.6
libgcc_s.so.1 needed by //usr/lib64/libconfig++.so
found libgcc_s.so.1 at /usr/local/lib64//libgcc_s.so.1
ld-linux-x86-64.so.2 needed by /usr/local/lib64//libstdc++.so.6
found ld-linux-x86-64.so.2 at /usr/lib64/ld-linux-x86-64.so.2
ld: warning: cannot find entry symbol _start; not setting start address

现在,我的LD_LIBRARY_PATH已经在它的路径上有/usr/lib64/,但我仍然面临这个问题,最重要的是,我试图通过在编译命令中链接库来编译:

g++ -o build/opt/fftoggle --static build/opt/fftoggle.o build/opt/config.o build/opt/galloc.o build/opt/log.o build/opt/pin_cmd.o -L/usr/lib64/ -lconfig++ -lpthread

还是没有运气。是我错过了什么,还是-lconfig++libconfig++无关

我认为问题是你需要一个静态库,却没有。

g++ -o build/opt/fftoggle——static

我不知道为什么会这样;选项是-static(一个破折号)。info gcc表示-static阻止链接到[sic]共享库ld是在告诉你没有这样的:

attempt to open //usr/x86_64-redhat-linux/lib64/libconfig++.a failed

顺便说一句,

我的LD_LIBRARY_PATH已经有/usr/lib64/

LD_LIBRARY_PATH未被静态链接器使用。它影响运行时链接器在加载可执行文件时搜索动态库的方式。

最新更新