用Ubuntu Trusty编译Travis上的32位二进制文件
问题描述:
我想编译Travis上的32位二进制文件。编译似乎正常工作,但-m32
似乎没有在32位模式下编译,因为链接不正确。用Ubuntu Trusty编译Travis上的32位二进制文件
指令编译:
gcc -m32 -DUNIX -DPD -I "/usr/include/pd" -fpic -DVERSION='"1.4.1"' \
-I"src/uthash/src" -std=c99 -Wall -Wextra -Wshadow -Winline \
-Wstrict-aliasing -O3 -ffast-math -funroll-loops -fomit-frame-pointer \
-march=pentium4 -mfpmath=sse -msse -msse2 \
-o src/json-encode.o -c src/json-encode.c
指令用于链接:
gcc -m32 -rdynamic -shared -fpic \
-Wl,-rpath,"\$ORIGIN",--enable-new-dtags -L "/usr/libx32" \
-L "/libx32" -o json-encode.pd_linux src/json-encode.o -lc \
-lm -lcurl -ljson-c -loauth
但它看起来像编译未在32位模式下进行,因为该消息,:
/usr/bin/ld: skipping incompatible /usr/libx32/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/libx32/libc.a when searching for -lc
编译前,环境设置为:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get -y install puredata-dev libjson-c-dev libcurl4-nss-dev liboauth-dev \
puredata-core:i386 libjson-c2:i386 libcurl3-nss:i386 liboauth0:i386 \
libc6-dev-i386 gcc-multilib
我是否缺少软件包或gcc选项?
完整的日志可以在https://travis-ci.org/residuum/PuRestJson/jobs/179125198
现在我已经使用'debootstrap'和'chroot': - / – Residuum