我在 x86 上试图交叉编译一个用 C++ 编写的用于 armhf 的 apache thrift 程序。我安装gcc-arm-linux-gnueabihf
并g++-arm-linux-gnueabihf
通过了apt-get
,但是当我使用它们编译我的程序时,我得到了
skipping incompatible /usr/local/lib/libthrift.so when searching for -lthrift
所以我尝试使用本指南配置 thrift 以编译与 armhf 兼容的 libthrift.so ,所以在 bash 中:
./configure CXX=arm-linux-gnueabihf-g++ CC=arm-linux-gnueabihf-gcc --prefix=/BBB/thrift --host=arm-linux-gnueabihf --with-cpp CFLAGS="-g -O2 -I$DIR/include" LDFLAGS="-L$DIR/lib
但后来我得到了:
checking for libevent >= 1.0... configure: error: in 'home/xic/thrift-0.9.0': configure: error: cannot run test program while cross compiling
所以然后我成功编译了libevent,但它仍然无法正常工作。看看thrift's config.log
,我明白了
/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lfl
collect2: ld returned 1 exit status
所以显然我也需要交叉编译flex。这真的是最好的方法吗,还是有更快/更简单的方法?
附言。我正在为使用 armhf 的 Beaglebone Black 进行交叉编译