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

相关推荐
cynicme19 小时前
力扣3318——计算子数组的 x-sum I(偷懒版)
java·算法·leetcode
阿巴~阿巴~20 小时前
线程安全单例模式与懒汉线程池的实现与优化
linux·服务器·单例模式·线程池·饿汉模式·懒汉模式·静态方法
大隐隐于野20 小时前
tcp 丢包分析
linux·服务器·网络
青云交20 小时前
Java 大视界 -- Java 大数据在智能教育学习效果评估与教学质量改进实战
java·实时分析·生成式 ai·个性化教学·智能教育·学习效果评估·教学质量改进
崎岖Qiu20 小时前
【设计模式笔记17】:单例模式1-模式分析
java·笔记·单例模式·设计模式
ShineSpark20 小时前
Crashpad 在windows下编译和使用指南
c++·windows
梦昼初DawnDream20 小时前
linux安全基线
linux·运维·安全
Broken Arrows20 小时前
在Linux系统中,top命令的显示参数详解
linux·运维·服务器
Lei活在当下20 小时前
【现代 Android APP 架构】09. 聊一聊依赖注入在 Android 开发中的应用
java·架构·android jetpack
不穿格子的程序员21 小时前
从零开始刷算法-栈-括号匹配
java·开发语言·