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

相关推荐
用户3721574261355 分钟前
Java 操作 Word 脚注和尾注:添加、读取与删除
java
丰锋ff15 分钟前
压缩命令笔记
linux
小嘉丶学长27 分钟前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
字节探索30 分钟前
Spring Boot 接口幂等性设计:从唯一索引到 Redis+Lua 的工程实践
java·spring boot
用户37215742613534 分钟前
Java 实现 Excel 与 Markdown 相互转换:表格导出、格式设置与多表提取
java
SL_staff1 小时前
制造业订单交付总踩坑?用结构化节点协同模型重构计划系统
java·开源·全栈
chari克里1 小时前
QT5.15.2 + msvc2022部署全流程说明(windows可联网环境)
开发语言·c++·qt
永遠_1 小时前
YAML格式化工具
java
GeW2 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
曼岛_2 小时前
[图解密码学]第4章 古典密码
java·数据库·密码学