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

相关推荐
t***442314 分钟前
【Springboot3+vue3】从零到一搭建Springboot3+vue3前后端分离项目之后端环境搭建
java
daidaidaiyu21 分钟前
SpringCloud 微服务实现一则 (Eureka + Hystrix)
java·spring
小哥不太逍遥38 分钟前
Technical Report 2024
java·服务器·前端
Mr_WangAndy43 分钟前
C++数据结构与算法_线性表_数组_概念动态数组,刷题
c++·二分查找·数组刷题·数组字符串逆序·零移动·有序数组的平方
阿猿收手吧!1 小时前
【C++】jthread:优雅终止线程新方案
开发语言·c++
zl_dfq1 小时前
Linux 之 【多线程】(死锁、同步与竞态条件、条件变量、pthread_cond_xxx、POSIX信号量、sem_xxx)
linux
学Linux的语莫1 小时前
k8s常用命令
linux·容器·kubernetes
openKylin1 小时前
《2025年度OpenAtom openKylin社区全景案例集》正式发布
linux
CS_Zero1 小时前
Ubuntu安装Claude Code
linux·ubuntu·ai编程·claude
edisao1 小时前
序幕-内部审计备忘录
java·jvm·算法