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

相关推荐
阳光80886 分钟前
体验开源OpenHarmony+stratovirt模拟器
linux·ubuntu·rust·开源
dr李四维7 分钟前
Java在小米SU7 Ultra汽车中的技术赋能
java·人工智能·安卓·智能驾驶·互联·小米su7ultra·hdfs架构
osir.21 分钟前
2025天梯训练1
c++·多关键字最短路
Zach_yuan30 分钟前
list的模拟实现
c++·list
RainbowSea31 分钟前
130道基础OJ编程题之: 78~88
java
松树戈41 分钟前
IDEA Commit 模态提交界面关闭VS开启对比
java·ide·intellij-idea
胡桃不是夹子41 分钟前
学会了蛇形矩阵
c++·算法·矩阵
谦行44 分钟前
前端视角 Java Web 入门手册 4.4:Web 开发基础—— Listener
java·后端
IvanWKQ1 小时前
本地服务重启-端口占用-显示和美国ip有个连接?存在恶意程序或是间谍程序?
linux·服务器·网络
结衣结衣.1 小时前
【Qt】自定义信号和槽函数
开发语言·c++·qt·c++11