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

相关推荐
小小unicorn1 分钟前
[微服务即时通讯系统]文件存储子服务的实现与测试
c++·redis·微服务·云原生·架构
前端技术2 分钟前
【鸿蒙实战】从零打造智能物联网家居控制系统:HarmonyOS Next分布式能力的完美诠释
java·前端·人工智能·分布式·物联网·前端框架·harmonyos
ldj20202 分钟前
Linux系统开放端口命令
linux
草莓熊Lotso2 分钟前
MySQL 数据库基础入门:从概念到实战
linux·运维·服务器·数据库·c++·人工智能·mysql
05大叔3 分钟前
Mybatis-Plus
java·开发语言·mybatis
芒果披萨3 分钟前
linux系统管理基本命令行
linux·运维·服务器
Will_11306 分钟前
Linux运维自动化常用的Python库
linux·运维·自动化
HalvmånEver6 分钟前
6.高并发内存池的内存释放全流程
开发语言·c++·项目学习··高并发内存池
程序设计实验室6 分钟前
2026年的Linux桌面环境选择,哪些适合Debian服务器?
linux
杜子不疼.6 分钟前
Spring Cloud+AI :实现分布式智能推荐系统
java·人工智能·spring cloud