Tuesday, May 14, 2024
 Popular · Latest · Hot · Upcoming
30
rated 0 times [  30] [ 0]  / answers: 1 / hits: 33358  / 3 Years ago, wed, june 23, 2021, 8:30:23

Trying to compile even the simplest (int main(){}) program with -m32 on a 64-bit system fails:



$ gcc -m32 test.c
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
collect2: error: ld returned 1 exit status


It seems to be still erroneously searching in the wrong directories when -m32 is specified.



libgcc-4.8-dev:i386 is installed and I've verified that the 32-bit libraries are located in /usr/lib/gcc/i686-linux-gnu/4.8/.



I've tried setting and exporting LD_INCLUDE_PATH and LD_LIBRARY_PATH to no avail.


More From » 14.04

 Answers
4

First, you need to install "gcc-multilib" and "g++-multilib"



sudo apt-get install gcc-multilib g++-multilib


Then your current command will work,



$ cat hello.c
#include <stdio.h>

int main(int argc, char *argv[]) {
puts("Hello, World!");
}
$ uname -a
Linux vbox-1404 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ gcc -m32 hello.c
$ ./a.out
Hello, World!
$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=80bdc95e2941e3ba8d7bb7c1682098f20e77cebc, not stripped

[#25754] Thursday, June 24, 2021, 3 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
ersoggles

Total Points: 69
Total Questions: 111
Total Answers: 111

Location: Vanuatu
Member since Sun, Oct 2, 2022
2 Years ago
ersoggles questions
;