인터넷 검색 후 몇 시간을 포기하고 전문가에게 문의하기로 결정했습니다. 64 Ubuntu 11.10에서 32 비트 응용 프로그램 (누가 관심이 있다면 xgap)을 만들려고합니다. 나는 추가 CFLAGS = -m32 과 LDFLAGS = -L는 / usr / lib32를 메이크에. 객체는 32 비트로 잘 구성되어 있습니다. 마지막 단계는 X 윈도우의 모든 객체와 라이브러리를이 실행 파일 인 xgap에 연결하는 것입니다. 어떻게 든이 오류가 계속 발생합니다.
gcc -o xgap xcmds.o utils.o gapgraph.o gaptext.o pty.o popdial.o xgap.o selfile.o -L/usr/lib32 -lXaw -lXmu -lXt -lXext -lX11 -lSM -lICE
/usr/bin/ld: skipping incompatible /usr/lib32/libXmu.so when searching for -lXmu
...
/usr/bin/ld: i386 architecture of input file `xcmds.o' is incompatible with i386:x86-64 output
...
내가 설치 한 IA32 - libs와 및 mutilib 지원 . 링커가 i386 출력을 생성하도록 강요해야한다고 생각합니다. 위와 같이 gcc 명령 에 두 개의 ld 플래그 를 넣으려고했습니다 : -melf_i386 및 -oformat elf32-i386 . 그러나 gcc는 더 이상 / usr / lib32 에서 32 비트 라이브러리를 검색하지 않습니다 . 고정 된 순서로 해당 플래그를 넣어야하는지 궁금합니다.
어떤 아이디어와 도움을 주셔서 감사합니다!
편집 : 마지막 gcc 명령 (내가 믿는 연결 단계)에 -m32 플래그를 추가하면 -L / usr / lib32 플래그가 있더라도 gcc는 더 이상 / usr / lib32에서 검색하지 않습니다 (정말 weird ...) 다음 오류를 생성합니다.
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../libXaw.so when searching for -lXaw
/usr/bin/ld: skipping incompatible /usr/lib/libXaw.so when searching for -lXaw
/usr/bin/ld: cannot find -lXaw
collect2: ld returned 1 exit status
왜 이런 일이 일어나는지 아는 사람이 있습니까? 자동 도구를 사용하여 구성하고 만듭니다. 스크립트 파일을 수정하는 것이 정말 좋습니다.
EIDT : 문제를 해결했습니다. gcc 는 정적 라이브러리 아카이브를 기대하고 있다고 생각합니다 . http://ubuntuforums.org/showthread.php?t=474790 의 getlibs 스크립트를 사용하여 링크에 필요한 모든 .a 아카이브를 다운로드했습니다. 그런 다음 gcc 는 일했습니다. 내 생각 GCC가 에서 검색을했다 는 / usr / lib32 디렉토리 만 찾을 수 없습니다 .A의 아카이브 그렇게되는 표준 디렉토리 검색에 갔다 는 / usr / lib 디렉토리 는 호환되지 않는 발견, .so를 * 파일을.
그러나 문제는 패키지 ia32-libs의 / usr / lib32 / 에 있는 * .so 파일에 실제로 링크에 필요한 라이브러리 가없는 것입니다. / usr / lib32 / 에있는 파일은 무엇에 사용됩니까?