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

相关推荐
snakeshe101012 小时前
SpringBoot 多人协作平台实战(6):SpringBoot Controller 入门与登录模块开发
java
用户2986985301412 小时前
用 Java 操作 Word 文档?试试添加内容控件
java·后端
带刺的坐椅12 小时前
Java AI 框架三国杀:Solon AI vs Spring AI vs LangChain4j 深度对比
java·ai·langchain4j·spring-ai·solon-ai
信看12 小时前
CM4 网口排查步骤
linux
苍煜12 小时前
K8s 集群快速搭建(系列第八篇:单机/多节点集群实战)
java·容器·kubernetes
Chase_______12 小时前
Java 基础语言 ① —— Java 运行机制与开发环境:从 javac 到 JVM 全流程解析
java·jvm·python
北风toto12 小时前
在 Axios 中发送 POST 请求并携带参数通常有以下两种方式
java
cui_ruicheng12 小时前
Linux线程(二):pthread 线程库与线程控制
java·开发语言·jvm
山北雨夜漫步12 小时前
LangGraph
java·前端·算法
jakeswang13 小时前
【AI面经】大模型半夜发短信骂客户?Agent 工具调用失控,你如何设计防护机制?
java·后端