c - 为什么在 linux 和 arm 之间加载二进制文件的结果如此不同?
问题描述
本质上,我希望我的主程序正确链接到一个库“libA.so”,并且该库中的符号“subFunc”可能来自另一个库(xxx),但这些符号“funcB”不会被主程序。我将它们编译如下: libA.so
int subfunc(int a, int b);
int funcB(int a, int b) {
return subfunc(a, b);
}
int funcA(int a, int b) {
return a + b;
}
主文件
#include <stdio.h>
int funcB(int a, int b);
int main()
{
funcB(1,2);
printf("hello\n");
return 0;
}
gcc --shared libA.cc -o libA.so
gcc main.cc libA.so -o main -Wl,--allow-shlib-undefined
./main './main' 可以在linux上正常运行,但是当我交叉编译它们时:
aarch64-linux-gnu-gcc --shared libA.cc -o libA.so
aarch64-linux-gnu-gcc main.cc libA.so -o main -Wl,--allow-shlib-undefined
然后在平台'arm','./main'上运行得到通知:./main:符号查找错误:libA.so:未定义符号:_Z7subfuncii
对我的任何建议,我将不胜感激。
解决方案
推荐阅读
- xamarin - 使用 Xamarin.Auth 进行身份验证时未调用重定向 URL
- bash - 修复 bash:意外标记 `>' 附近的语法错误
- apache-kafka - 消费者失败后 Kafka 组重新平衡。org.apache.kafka.clients.consumer.internals.ConsumerCoordinator
- swift - 注释显示优先级没有达到我的预期,如何在屏幕上保留自定义图钉
- python - 截断熊猫数据框中的行数
- bash - 如何使用 Expect 从 URL 运行文件?
- python - 如何加速 Pandas .to_sql 函数?
- jquery - 所选字段未填充预定义的 selectedOptions
- shell - 为什么我的脚本在缩进后会失败?
- javascript - a-frame 不会加载自己的 3d 模型