2016-11-27 2 views
1

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

+0

지금은'debootstrap'과'chroot'에 의지했습니다 : - / – Residuum

답변

2

/libx32에서 찾을 수 있으며 /usr/libx32는 I386에 다른x32 platform 제 (전설하지만 틈새 시장)에 대한 것입니다. 즉, 링커 검색 경로에 이러한 디렉토리를 포함시키지 않으려 고했습니다.