导航:首页 > 源码编译 > 交叉编译后运行提示找不到so

交叉编译后运行提示找不到so

发布时间:2024-12-08 13:21:37

⑴ 关于交叉编译工具链的问题

核心转储是崩溃报告的一个过程,他只是把当前崩溃的信息转存出来方便差错。而且这个核心转储几个字也不过是个提示输出信息。这个提示不会给与任何与错误相关的内容,必须看其他的错误信息或者他转储出来的东西来分析。
不过核心转储,应该是程序运行出错而崩溃。这种问题出现在你正在运行的程序,而不是编译过程出现的编译错误(也就是说,出现核心转储应该就是 GCC 或者他调用的程序自己崩溃了)。出现这个问题的原因很多。

如果是因为没有找到某些 header 文件,不应该是核心转储错误,而是编译器或者某个过程提示错误信息后退出,他会输出错误信息告诉你问题所在。

至于你编译的这些东西版本都比较老,我建议还是尝试降级整个系统来编译、运行你现在的这些东西。或者升级你这个交叉编译工具链到当前主流的版本来用。

至于交叉工具连当中的 GCC 和你当前本机的 GCC,完全是两个互相独立的 GCC 。
只是他们编译输出的二进制程序针对的指令集不同而已。相对的 binutils 和 glibc 和 kernel-header 都是一样的意思,针对目标而输出的相关程序。当然 glibc 和 kernel-header 主要是以“数据”方式存在,gcc 和 binutils 主要是以可以运行的程序方式存在(当然不是绝对的,比如 gcc 还会提供几个 lib 相关的内容,不过大部分情况下你可以这么理解更直观了解他们的作用)。
一般说来 GCC 是编译器,binutils 是连接器,glibc 是标准 C 库(主要是连接时,连接器必须有目标的函数库文件,也就是 .so 文件,对应 Windows 是 .dll 文件。连接器把函数调用正确的挂接到对应的函数入口上)。linux header 就是 C 语言常见的 C header 文件和相关的开发数据。一般主要用来编译 glibc ,glibc 作为中间层来提供内核相关调用。当然程序有些时候也会直接调用内核函数,这样这些程序在编译时也需要 kernel 的 header 。

这两套东西一个输出你当前 PC 的程序,一个输出 ARM 的程序。两个 GCC 套装之间不能互相替换。只能自己输出属于自己的程序。
但是这两套程序虽然输出的程序不同,但可以运行的部分,却都是在你的计算机上运行。而且你本机的 GCC 因为可以输出本机的程序。所以你需要用他来输出在你本机运行,但是却输出 ARM 程序的 GCC 套装。

这就好比两个锤子,一个锤子用来打铁,一个锤子用来打锡。用途不同,但这两个锤子都是铁做的。
你作这个交叉编译工具链,就是用你手里已经有的打铁的锤子,打出一个用铁制作的用来打锡的锤子。这个打锡的锤子是不能打铁的,同样这个打铁的锤子是不能用来打锡的。

⑵ 交叉编译busybox显示libc.so.6丢失!

拷贝C 库
交叉应用程序的开发需要用到交叉编译的链接库,我们在移植应用程序到我们的目标板的时
候,需要把交叉编译的链接库也一起移植到目标板上,这里我们用到的交叉工具链的路径是
/usr/local/arm/...../,链接库的目录是/usr/local/arm/...../arm-linux/lib,将其中部分库文件及符号链接拷贝到root_nfs(你创建的busybox的根目录)文件夹下的lib文件夹中。
部分库文件及符号链接有:ld-2.3.2.so,ld-linux.so.2,libc-2.3.2.so,libc.so.6

⑶ linux下用交叉编译器编译时,已经指定了库的路径跟库的名字,可是还是报错找不到库。

看起来它不是个库,倒像是个可执行程序
一般so都放在lib这样的目录下,你这个是bin,而且和它在一起的都是可执行程序,并且它没有so后缀名。

⑷ 32位(i686)linux的ubuntu,交叉编译3.0.2的vsftp老出错

交叉编译环境或者编译之前的设置有问题。
当然还一个可能就是 vsftp 对交叉编译的支持不好。导致调用错了 so 函数库文件。
你这个提示明显的是调用了当前系统的 /lib/libpam.so.0 ,交叉编译环境,肯定不能调用这个 so 函数库文件。

⑸ 为什么.o链接未so库符号丢失了

o链接未so库符号丢失了原因交叉应用程序的开发需要用到交叉编译的链接库,我们在移植应用程序到我们的目标板。

链接库的目录是/usr/local/arm/arm-linux/lib,将其中部分库文件及符号链接拷贝到root_nfs(你创建的busybox的根目录)文件夹下的lib文件夹中。

extern:

extern是编程语言中的一种属性,它表征了变量、函数等类型的作用域(可见性)属性,是编程语言中的关键字。当进行编译时,该关键字告诉编译器它所声明的函数和变量已在其他文件中定义。

可以在本模块或者文件以及其他模块或文件中使用。通常,程序员会在 "*.c" 文件中声明定义变量或定义函数,并在“*.h”(头文件)中使用该关键字限定变量或函数等,然后可在该头文件或其他模块中include使用。

⑹ Linux下用交叉编译器编译报错缺少Libcso6【求教】

#打开/etc/ldsoconf,在最后一行添加/home/xassassin/armlinuxdev/bin/lib/$sudo vim /etc/ldsoconf#执行此命令,然后再编译$sudo ldconfigLinux下用交叉编译器编译报错缺少Libcso6【求教】

⑺ Linux下用交叉编译器编译报错缺少Libc.so.6【求教】

#打开/etc/ld.so.conf,在最后一行添加/home/xassassin/armlinuxdev/bin/lib/
$sudovim/etc/ld.so.conf
#执行此命令,然后再编译
$sudoldconfig

⑻ linux交叉编译Qt 失败

设置环境变量 export QT_DEBUG_PLUGINS=1
重新运行程序
Cannot load library /opt/Qt-5.12.4/plugins/platforms/libqxcb.so2
输入ldd /opt/Qt-5.12.4/plugins/platforms/libqxcb.so

显示缺少 libxkbcommon,并展示其路径。
然后将显示路径中的拷贝到需要的目录中。

⑼ 交叉编译时候怎么设置连接库的搜索路径

找不到libQtGui.so这个库,添加环境变量LIBRARY_PATH=/opt/Qt4.7/lib试试另外你使是用arm-linux-gcc编译程序,需要保证QT下的libQtGui.so库也是用arm-linux-gcc编译的,否则编译链接会出问题

⑽ ARM交叉编译时链接错误,提示collect2: ld returned 1 exit status,求解答

libVimbaC.so编译的不对, 使用arm gcc链接so命令:
arm-none-linux-gnueabi-gcc -o libVimbaC.so -shared ..... VimbaC.cpp
就可以编译出arm下用的动态库了.

阅读全文

与交叉编译后运行提示找不到so相关的资料

热点内容
精品php源码 浏览:960
自己编写云服务器抢红包 浏览:203
java解压缩文件加密 浏览:887
dlink打印服务器默认地址 浏览:353
php休眠函数 浏览:372
金蝶如何打开服务器 浏览:765
e4a手游辅助源码 浏览:777
什么app可以实时直播 浏览:106
苹果13的app闪退什么原因 浏览:775
尾盘选股源码公式 浏览:450
php日期运算 浏览:931
天龙八部长歌服务器什么时候开的 浏览:199
鬼泣4模型在那个文件夹 浏览:229
单片机的串行口 浏览:58
phpjson转化为数组 浏览:268
pdf导入excel 浏览:428
苹果xsmax信任app在哪里设置 浏览:53
自动外链php源码 浏览:245
我的世界新手奖励箱命令 浏览:146
linux更新vim 浏览:998