我正在x86上尝试交叉编译一个用C ++编写的apache thrift程序到armhf。我通过apt-get
安装了gcc-arm-linux-gnueabihf
和g++-arm-linux-gnueabihf
,但是当我使用它们来编译我的程序时,我得到了以下错误:
skipping incompatible /usr/local/lib/libthrift.so when searching for -lthrift
于是我尝试按照this guide配置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的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进行交叉编译。
--enable-tests=no
。 - wilbeibi