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

相关推荐
码农水水几秒前
京东Java面试被问:Spring Boot嵌入式容器的启动和端口绑定原理
java·开发语言·人工智能·spring boot·面试·职场和发展·php
前端切图仔0012 分钟前
Chrome 扩展程序上架指南
android·java·javascript·google
玖釉-3 分钟前
[Vulkan 学习之路] 05 - 缔结契约:创建逻辑设备 (Logical Device)
c++·windows·图形渲染
彩妙不是菜喵4 分钟前
c++:初阶/初始模版
开发语言·c++
冰冰菜的扣jio5 分钟前
RocketMQ入门——快速搭建
linux·rocketmq
专注于大数据技术栈5 分钟前
java学习--LinkedList
java·开发语言·学习
weixin199701080166 分钟前
安家 GO item_get - 获取安家详情数据接口对接全攻略:从入门到精通
java·大数据·python·golang
予枫的编程笔记6 分钟前
【Java进阶】Spring Security详解
java·spring security·security
D_FW7 分钟前
【Java】SpringAMQP+RabbitMQ消息可靠性保证
java·rabbitmq·java-rabbitmq
区区一散修7 分钟前
0.IntelliJ IDEA的安装和使用
java·ide·intellij-idea