将32位ARM代码迁移到64位开发环境

mus*_*abi 0 c linux arm

我有一个基于GTK的ARM项目,历史上是在32位Ubuntu虚拟机上开发的.目前,我正在尝试将其迁移到新的64位Arch Linux开发盒.我不知道如何处理我所采取的两条路线所产生的错误.

如果我告诉链接器使用/ usr/lib,编译将停止告诉我

/usr/lib/librt.so: file not recognized: File format not recognized
Run Code Online (Sandbox Code Playgroud)

因此,假设这是一个32位vs 64位的问题,我将gcc指向/ usr/lib32并收到以下内容

/usr/bin/arm-linux-gnueabi - ld: skipping incompatible /usr/lib32/librt.so when searching for -lrt
/usr/bin/arm-linux-gnueabi - ld: skipping incompatible /usr/lib32/librt.a when searching for -lrt
/usr/bin/arm-linux-gnueabi - ld: skipping incompatible /usr/lib32/libpthread.so when searching for -lpthread
/usr/bin/arm-linux-gnueabi - ld: skipping incompatible /usr/lib32/libpthread.a when searching for -lpthread
/usr/bin/arm-linux-gnueabi - ld: cannot find -lz
/usr/bin/arm-linux-gnueabi - ld: cannot find -lsqlite3
/usr/bin/arm-linux-gnueabi - ld: cannot find -lusb-1.0
/usr/bin/arm-linux-gnueabi - ld: cannot find -lssl
Run Code Online (Sandbox Code Playgroud)

等等.我尝试从Arch存储库安装lib32-sqlite无济于事.

对于任何一个目录,我会收到许多次的警告,我也不确定

/usr/include/pthread.h:672:6: warning: '__regparm__' attribute directive ignored [-Wattributes]
/usr/include/pthread.h:684:3: warning: '__regparm__' attribute directive ignored [-Wattributes]
/usr/include/pthread.h:729:6: warning: '__regparm__' attribute directive ignored [-Wattributes]
Run Code Online (Sandbox Code Playgroud)

我不确定这只是过时代码编译的工件是针对最新的库还是什么,但这是我想要解决的问题.

编辑:我的目标架构是ARM926EJ-S/i.MX27

lda*_*v1s 6

我想冒昧地猜测你的交叉编译环境没有引用正确的库/头文件.也就是说,它们引用了构建库/头文件(i586?)而不是ARM的交叉编译库/头文件arm-linux-gnueabi.