gcc -l参数出现在命令行中顺序问题导致的“undefined symbol“问题

原有的编译命令(他方提供):

shell 复制代码
gcc -shared -fpic -o libaqrng.so -I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/linux" -L. -lxtqrngop  aqrng.c

编译成功, 将生成的libaqrng.so放到/usr/lib, jni引用报错:

ldd -r查看:

最终查到的有效资料:

所以是因为-lxtqrngop这个库引用参数在使用该库的源码文件aqrng.c之前, 导致链接器认为该库是无用的并舍弃, 最终导致的"undefined symbol"问题.

修正后的编译命令:

shell 复制代码
gcc -shared -fpic  aqrng.c -o libaqrng.so -I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/linux" -L. -lxtqrngop

使用新编译的库后:

调用成功.

引用: https://www.cnblogs.com/ezrealiu/p/the-order-of_-l-option-in-gcc-command.html

相关推荐
大袁同学13 小时前
【基础开发工具】:掌握编译利器,构筑工程基石
linux
_codemonster13 小时前
JavaWeb开发系列(九)idea配置jdbc
java·ide·intellij-idea
Hx_Ma1613 小时前
测试题(六)
java·tomcat·mybatis
码云数智-大飞13 小时前
.NET 10 & C# 14 新特性详解:扩展成员 (Extension Members) 全面指南
java·数据库·算法
星星乘坐的船13 小时前
基于Kubernetes Python SDK实现Job创建
linux·python·kubernetes
Anastasiozzzz13 小时前
阿亮随手录-SpringBoot启动流程、三级缓存要求、BeanFactory与FactoryBean、AutoWired与Resource、不推荐字段注入
java·spring
W_Meng_H13 小时前
XXL-JOB - 集成 Python 执行器实战指南
linux·python
枫叶丹413 小时前
【Qt开发】Qt界面优化(五)-> Qt样式表(QSS) 子控件选择器
c语言·开发语言·数据库·c++·qt
袁袁袁袁满13 小时前
Docker后台日志和容器日志怎么查看?
linux·运维·服务器·docker·容器
xiaoye-duck14 小时前
《算法题讲解指南:优选算法-双指针》--01移动零,02复写零
c++·算法