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

相关推荐
沫璃染墨9 分钟前
《从零入门Linux系统篇(三十二):文件篇·五——深入理解磁盘:从物理结构到LBA寻址》
linux·运维·服务器·系统架构·硬件架构
2601_9620652519 分钟前
2.启动mysql容器
java·数据库·mysql
2601_9620654920 分钟前
PHP For 循环
android·java·php
2601_9561219724 分钟前
线性DP(入门)
c++·算法·动态规划
2601_9622017226 分钟前
Java进阶,集合,Colllection,常见数据结构
java·数据结构·windows
彷徨而立31 分钟前
【C/C++】多线程读写普通 int 变量的一些问题
java·c语言·c++
卓怡学长33 分钟前
w175基于springboot校园二手物品交易平台
java·spring boot·spring·maven·intellij-idea
chen<>35 分钟前
malloc 和 free 背后发生了什么?
java·linux·服务器·操作系统
sunzy_泽阳37 分钟前
Java + Spring 实现 Hermes Agent:从源码看多模型接入、子代理、人审与沙箱
java
2601_9611332843 分钟前
同花顺期货通指标公式通达信指标
java