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

相关推荐
南山乐只13 分钟前
Qwen Code + OpenSpec 实战指南:AI 驱动开发的从安装到落地
java·人工智能·后端
有味道的男人14 分钟前
如何使用招标网API获取项目详情?
java·服务器·前端
Suchadar17 分钟前
在Linux中安装Python
linux·运维·服务器
CSDN_RTKLIB26 分钟前
C++仿函数
c++·算法·stl
YQ_0130 分钟前
Ubuntu 18.04 离线安装 CUDA 11.2 + cuDNN 8.2 (修复 Paddle 缺少 .so 报错)
linux·ubuntu·paddle
代码写到35岁31 分钟前
【Java 单体架构改造 微服务 网关遇坑之 跨域配置】
java·微服务·架构
零基础的修炼32 分钟前
Linux网络---TCP原理
linux·网络·tcp/ip
qq_124987075336 分钟前
基于Java的心理测试系统的设计与实现(源码+论文+部署+安装)
java·开发语言·vue.js·spring boot·计算机毕设·计算机毕业设计
拽着尾巴的鱼儿37 分钟前
Spring定时任务 Scheduled使用
java·后端·spring
Lam㊣38 分钟前
Ubuntu永久网络静态路由配置
linux·运维·服务器·网络·ubuntu