首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

ld忽略库
EN

Stack Overflow用户
提问于 2011-11-04 18:02:26
回答 1查看 1.2K关注 0票数 1

Ubuntu 11.10中的链接器似乎忽略了我在链接行中指定的库,如果它们不包含被链接的应用程序使用的任何符号:

代码语言:javascript
运行
复制
Linking CXX executable ../../bin/gpu_sd_list
cd /home/eile/Software/gpu-sd/debug/apps/gpu_sd_list && /usr/bin/cmake -E cmake_link_script CMakeFiles/gpu_sd_list.dir/link.txt --verbose=1
/usr/bin/c++    -Wall -Wextra -Winvalid-pch -Wnon-virtual-dtor -Wsign-promo -Wshadow -Winit-self -Wno-unknown-pragmas -Wno-unused-parameter -Wno-write-strings -Werror -g    CMakeFiles/gpu_sd_list.dir/gpu_sd_list.cpp.o  -o ../../bin/gpu_sd_list -rdynamic ../../lib/libgpusd_remote_dns_sd.so.1.0.0 -ldns_sd ../../lib/libgpusd_remote.so.1.0.0 -Wl,-rpath,/home/eile/Software/gpu-sd/debug/lib: 

ldd ./debug/bin/gpu_sd_list
linux-vdso.so.1 =>  (0x00007fff0a5c6000)
libgpusd_remote.so.1 => /home/eile/Software/gpu-sd/debug/lib/libgpusd_remote.so.1 (0x00007ff9a21fc000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff9a1ece000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff9a1cb7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff9a1918000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff9a1694000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff9a2406000)

缺少libgpusd_remote_dns_sd.so.1.0.0。这在Ubuntu 11.04中有效。该库包含一个向gpusd_remote库注册模块的静态初始化器。如果它没有在程序启动时加载,功能就会丢失。完整的源代码在https://github.com/Eyescale/gpu-sd

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-04 18:13:34

你可以这样做:

代码语言:javascript
运行
复制
.... -Wl,-no-as-needed -lfoo -lbar -Wl,-as-needed

这将链接到libfoolibbar,而不管它们是否实际需要。

as-needed是某些发行版的默认设置,因为它在大多数情况下都是有意义的。

(不过我不确定你的设计是不是一个好主意。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8007539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档