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

相关推荐
customer089 分钟前
【开源免费】基于SpringBoot+Vue.JS医院后台管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
qq_2430507921 分钟前
sslscan:快速 SSL/TLS 扫描器!全参数详细教程!Kali Linux教程!黑客渗透教程!
linux·网络安全·黑客·渗透测试·信息收集·kali linux·黑客工具
安清h33 分钟前
【基于SprintBoot+Mybatis+Mysql】电脑商城项目之用户登录
java·后端·mysql·spring
利刃大大37 分钟前
【数据结构与算法】九大排序算法实现详解
c语言·数据结构·c++·算法·排序算法
泪不是Web妳而流38 分钟前
【深入探索】Linux基础及配置
linux·经验分享·学习方法
生产队队长1 小时前
SpringSecurity:There is no PasswordEncoder mapped for the id “null“
java·spring
迟來北风2 小时前
idea找不到或无法加载主类怎么解决
java·spring boot·intellij-idea
qystca2 小时前
【16届蓝桥杯寒假刷题营】第2期DAY2
数据结构·c++·算法·深度优先·二分·爆搜
qq_338432372 小时前
IntelliJ IDEA远程开发代理远程服务器端口(免费内网穿透)
java·ide·intellij-idea·远程开发
我命由我123453 小时前
游戏引擎 Unity - Unity 设置为简体中文、Unity 创建项目
c语言·开发语言·c++·unity·visualstudio·c#·游戏引擎