Linux gcc编译时强制链接并依赖一个库(即使未使用)
Posted 柳鲲鹏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux gcc编译时强制链接并依赖一个库(即使未使用)相关的知识,希望对你有一定的参考价值。
同事报了个LINUX的BUG,字体方向不对。吾心里奇怪。今天专门研究了一下:
- 在开发环境中测试,正常。
- 使用JAVA运行,正常。
- 使用启动器,错误。
为什么错误?吾一想就明白了:字体库没有正确加载。吾之前已经改名了,以为JDK能正确加载,结果还是出了问题:
ldd Office | grep freetype
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f1523fd2000)
怎么办?吾把接口名改了再编译JDK,也没有解决。真是诡异无比。怎么办?强制链接。在网上搜索了半天,终于找到了解决办法:
gcc ...... \\
-Wl,--no-as-needed -ltsfreetype -Wl,--as-needed
# tsfreetype要能找到。
# 对于静态库:
# -Wl,--whole-archive -ltsfreetype -Wl,--no-whole-archive
再看:
ldd Office | grep freetype
libtsfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libtsfreetype.so.6 (0x00007f38ad6f0000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f38a838b000)
以上是关于Linux gcc编译时强制链接并依赖一个库(即使未使用)的主要内容,如果未能解决你的问题,请参考以下文章