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

相关推荐
布局呆星几秒前
Spring Boot + JWT + Spring Security 认证授权实战:双角色、双 Token、方法级权限,一次讲透
java·开发语言
大G的笔记本几秒前
生产级 Spring Boot 网关完整实现方案
java·笔记·gateway
LucianaiB2 分钟前
Swarm管理面板的多项目配置策略与模型别名机制的效率分析
java·服务器·前端
qq_2518364576 分钟前
基于Spring Boot的数据标注与质检系统设计与实现
java·spring boot·后端
CHANG_THE_WORLD9 分钟前
在 VS Code 中让终端显示简洁路径(告别冗长全路径)
linux
zxw61011 分钟前
UFOMap代码Debug
c++
總鑽風11 分钟前
Spring AI实战:快速集成阿里通义千问
java·后端·spring·ai编程
fpcc12 分钟前
工具使用—CMake文件中的常见变量
c++
liu-yonggang15 分钟前
MISRA C++:2008 — Guidelines for the use of the C++ language in critical systems
c++
一条泥憨鱼16 分钟前
苍穹外卖【day3|菜品管理】
java·数据库·sql·mysql·mybatis