2016-11-27 1 views
1

Ich versuche, eine 32-Bit-Binärdatei auf Travis zu kompilieren. Die Kompilierung scheint korrekt zu funktionieren, aber -m32 scheint nicht im 32-Bit-Modus zu kompilieren, da die Verknüpfung nicht richtig erfolgt.Kompilieren von 32-Bit-Binärdateien auf Travis mit Ubuntu Trusty

Anleitung zum Kompilieren vor:

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 

Anleitung für die Verknüpfung:

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 

Aber es sieht aus wie Kompilation nicht in 32-Bit-Modus durchgeführt wurde, weil die Nachrichten:

/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 

Vor dem Kompilieren wird die Umgebung eingerichtet mit:

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 

Fehle ich Pakete oder GCC-Optionen?

Das vollständige Protokoll kann bei https://travis-ci.org/residuum/PuRestJson/jobs/179125198

+0

Für jetzt habe ich auf 'debootstrap' und' chroot' zurückgegriffen: - / – Residuum

Antwort

2

/libx32 und /usr/libx32 sind für die (legendär aber Nische) x32 platform die verschiedenen zu i386 ist gefunden werden. Kurz gesagt, Sie wollten diese Verzeichnisse fast sicher nicht in Ihren Linker-Suchpfad aufnehmen.

Verwandte Themen