编译问题--arm_linux编译问题记录

1、出现Can’t exec “autopoint”: No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 345.错误

(1)错误日志:

[15:02:43:900]autoreconf: Entering directory `.'
[15:02:43:918]autoreconf: running: autopoint --force
[15:02:43:918]Can't exec "autopoint": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 345.
[15:02:43:918]autoreconf: failed to run autopoint: No such file or directory
[15:02:43:919]autoreconf: autopoint is needed because this package uses Gettext

(2)解决办法:

sudo apt-get install autopoint
sudo apt-get install gettext

安装这两个软件之后问题就可以得到解决。

2、出现 /usr/lib/gcc-cross/aarch64-linux-gnu/9/…/…/…/…/aarch64-linux-gnu/bin/ld: …/libssl.so: undefined reference to `pthread_rwlock_rdlock 错误

(1)错误日志:

[15:18:10:526]make[2]: Entering directory '/home/zhujianming/work/Ambare_plat/develop/iray_ipc/3rdparty/openssl-1.0.2p/apps'
[15:18:10:592]/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: ../libssl.so: undefined reference to `pthread_rwlock_rdlock'
[15:18:10:593]/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: ../libssl.so: undefined reference to `pthread_rwlock_init'
[15:18:10:594]/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: ../libssl.so: undefined reference to `pthread_rwlock_destroy'
[15:18:10:594]/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: ../libssl.so: undefined reference to `pthread_rwlock_wrlock'
[15:18:10:596]/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: ../libssl.so: undefined reference to `pthread_rwlock_unlock'

(2)解决办法:

  • 首先需要排除是否线程库的问题;
  • 由于编译器的版本兼容性问题,可能导致有些GCC需要把makefile的-lpthread都改为-pthread就可以了。具体可以参考make时提示pthread的错误

3、出现 aarch64-linux-gnu/bin/ld: cannot find -lssl 错误

(1)错误日志:

/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: cannot find -lssl
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: cannot find -lcrypto

(2)解决办法:

  • 首先查找编译器连接的库文件目录
    使用如下命令:
 /opt/linaro-aarch64-2020.09-gcc10.2-linux5.4/aarch64-linux-gnu/bin/ld --verbose | grep SEARCH_DIR

其中: /opt/linaro-aarch64-2020.09-gcc10.2-linux5.4/aarch64-linux-gnu/bin/ld是本地的编译器的路径,查找结果如下:

SEARCH_DIR("=/development/abe-toolchain-build/abe.build/ambarella/builds/aarch64-2020.09/destdir/x86_64-unknown-linux-gnu/aarch64-linux-gnu/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/development/abe-toolchain-build/abe.build/ambarella/builds/aarch64-2020.09/destdir/x86_64-unknown-linux-gnu/aarch64-linux-gnu/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");

比如我要按照到/usr/lib/gcc-cross/aarch64-linux-gnu/9,那么–prefix=/usr/lib/gcc-cross/aarch64-linux-gnu/9,执行如下操作即可:

git clone https://github.com/openssl/openssl.git
cd openssl
git checkout OpenSSL_1_0_2-stable
./config --prefix=/usr/lib/gcc-cross/aarch64-linux-gnu/9 --cross-compile-prefix=aarch64-linux-gnu- no-asm shared
sed -i "s/-m64//g" Makefile
make
sudo make install

4、出现 make: aarch64-linux-gnu-g++: Command not found 错误

(1)错误日志:

[15:53:20:944]INFO: will now build "jsonapp"...
[15:53:20:945]aarch64-linux-gnu-g++ -Wall -march=armv8-a+crypto -mcpu=cortex-a53+crypto -g -fPIC -O2 -I./Include -Wall -Os -D_REENTRANT -fPIC -c -o src/lib_json/json_ext.o src/lib_json/json_ext.cpp
[15:53:20:945]make: aarch64-linux-gnu-g++: Command not found
[15:53:20:945]make: *** [Makefile:29: src/lib_json/json_ext.o] Error 127
[15:53:20:945]Error, failed to build "jsonapp": 2
[15:53:20:947]Error, build function for "jsonapp" has failed: 2

(2)解决办法

  • 出现这个问题,首先排除是否安装了工具链;
  • 如果工具链安装了,那么可能是环境变量设置的问题,环境变量设置的命令如下:
export PATH=$PATH:/opt/linaro-aarch64-2020.09-gcc10.2-linux5.4/bin/

其中/opt/linaro-aarch64-2020.09-gcc10.2-linux5.4/bin/是工具链的安装位置。

5、出现 Error: “Invalid configuration aarch64-linux-gnu': machine aarch64’ not recognized”错误

(1)错误日志

checking build system type... Invalid configuration `aarch64-linux': machine `aarch64' not recognized

(2)解决办法

  • 下载最新的配置文件
wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
  • 将新的配置文件替换原来第三库的config.guess和config.sub即可。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值