【发布时间】:2015-07-29 10:44:36
【问题描述】:
我正在尝试编译 crypto++ 库以运行 armhf 架构。我正在遵循answer 中提供的方法。我调整了setenv-embed.sh 以匹配我的系统配置。运行. ./setenv-embed.sh 的输出是
CPP: /usr/bin/arm-linux-gnueabihf-cpp
CXX: /usr/bin/arm-linux-gnueabihf-g++
AR: /usr/bin/arm-linux-gnueabihf-ar
LD: /usr/bin/arm-linux-gnueabihf-ld
RANLIB: /usr/bin/arm-linux-gnueabihf-gcc-ranlib-4.8
ARM_EMBEDDED_TOOLCHAIN: /usr/bin
ARM_EMBEDDED_CXX_HEADERS: /usr/arm-linux-gnueabihf/include/c++/4.8.2
ARM_EMBEDDED_FLAGS: -march=armv7-a mfloat-abi=hard -mfpu=neon -I/usr/arm-linux-gnueabihf/include/c++/4.8.2 -I/usr/arm-linux-gnueabihf/include/c++/4.8.2/arm-linux-gnueabihf
ARM_EMBEDDED_SYSROOT: /usr/arm-linux-gnueabihf
这表明已找到正确的编译器。但是,当我使用 make 构建库时遇到以下错误
/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/bin/ld: cannot find /usr/arm-linux-gnueabihf/lib/libc.so.6 inside /usr/arm-linux-gnueabihf
/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/bin/ld: cannot find /usr/arm-linux-gnueabihf/lib/libc_nonshared.a inside /usr/arm-linux-gnueabihf
/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/bin/ld: cannot find /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 inside /usr/arm-linux-gnueabihf
但是当我打开/usr/arm-linux-gnueabihf/lib位置时,我可以找到上面提到的所有三个错误文件,即libc.so.6、libc_nonshared.a和ld-linux-armhf.so.3
我正在尝试为 Beaglebone 编译库,如果有帮助的话。
更新 1:
在做一个新鲜的git pull之后运行make -f GNUmakefile-cross system的结果
hassan@hassan-Inspiron-7537:~/cryptopp-armhf$ make -f GNUmakefile-cross system
CXX: /usr/bin/arm-linux-gnueabihf-g++
CXXFLAGS: -DNDEBUG -g2 -Os -Wall -Wextra -DCRYPTOPP_DISABLE_ASM -march=armv7-a -mfloat-abi=hard -mfpu=neon -mthumb -I/usr/arm-linux-gnueabihf/include/c++/4.8.2 -I/usr/arm-linux-gnueabihf/include/c++/4.8.2/arm-linux-gnueabihf --sysroot=/usr/arm-linux-gnueabihf -Wno-type-limits -Wno-unknown-pragmas
LDLIBS:
GCC_COMPILER: 1
CLANG_COMPILER: 0
INTEL_COMPILER: 0
UNALIGNED_ACCESS:
UNAME: Linux hassan-Inspiron-7537 3.13.0-35-generic #62-Ubuntu SMP Fri Aug 15 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
MACHINE:
SYSTEM:
RELEASE:
make: Nothing to be done for `system'.
【问题讨论】:
-
嵌入式标签将在正确的专家的雷达上得到问题。有一些非常敏锐的人遵循嵌入式标签。抱歉,我无法提供帮助。
-
"/usr/bin/ ..." "找不到 /usr/arm-linux-gnueabihf/ ..." PATH 不匹配?
-
我不这么认为。第一个
usr/bin/指向编译器可执行文件的路径。奇怪的是它声称找不到的文件存在于目录中 -
这通常是因为地址宽度不匹配导致链接器拒绝它们。您是否尝试使用 ARMv8 64 位库进行 ARMv7 32 位编译?尝试在库上运行 objdump,它会告诉你它们的编译目的。
-
@user3079474 - "当我使用
make进行库时..." 这引起了我的注意...你只是在运行make;或者你正在运行make -f GNUmakefile-cross?
标签: c++ linker arm embedded crypto++