multi-arch ld cannot find -lSDL or -LSDL-1.2

Bug #1481440 reported by Bryce Schober
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
libsdl1.2 (Ubuntu)
Invalid
Undecided
Unassigned

Bug Description

I'm trying to compile a 32-bit application on Trusty x86-64. I've installed the libsdl1.2-dev and libsdl1.2debian:i386 packages successfully. When I try to compile any 32-bit application that links to -lSDL, it fails to link.

#include <SDL/SDL.h>
int main(int argc, char* argv[])
{
 if (SDL_Init(SDL_INIT_VIDEO) != 0) {
  exit(1);
 }
 SDL_Quit();
 return 0;
}

The above trivial C application below builds just fine as 64-bit with the following command: gcc main.c -lSDL
But when I try to build it with the -m32 flag, using the command: gcc -m32 main.c -Wl,--verbose -lSDL
I get the following output:

GNU ld (GNU Binutils for Ubuntu) 2.24
  Supported emulations:
   elf_x86_64
   elf32_x86_64
   elf_i386
   i386linux
   elf_l1om
   elf_k1om
   i386pep
   i386pe
using internal linker script:
==================================================
/* Script for -z combreloc: combine and sort reloc sections */
OUTPUT_FORMAT("elf32-i386", "elf32-i386",
       "elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
SEARCH_DIR("/usr/i386-linux-gnu/lib32"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");

<snipped/>

==================================================
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/crt1.o succeeded
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/crt1.o
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/crti.o succeeded
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/crti.o
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/crtbegin.o succeeded
/usr/lib/gcc/x86_64-linux-gnu/4.8/32/crtbegin.o
attempt to open /tmp/ccZi14Qh.o succeeded
/tmp/ccZi14Qh.o
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libSDL.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libSDL.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libSDL.so failed
attempt to open /usr/lib/gcc/x86_64-liGNU ld (GNU Binutils for Ubuntu) 2.24
  Supported emulations:
   elf_x86_64
   elf32_x86_64
   elf_i386
   i386linux
   elf_l1om
   elf_k1om
   i386pep
   i386pe
using internal linker script:
==================================================
/* Script for -z combreloc: combine and sort reloc sections */
OUTPUT_FORMAT("elf32-i386", "elf32-i386",
       "elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
SEARCH_DIR("/usr/i386-linux-gnu/lib32"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib32"); SEARCH_DIR("=/usr/local/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib/i386-linux-gnu"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib/i386-linux-gnu"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");

<snipped/>

==================================================
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/crt1.o succeeded
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/crt1.o
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/crti.o succeeded
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/crti.o
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/crtbegin.o succeeded
/usr/lib/gcc/x86_64-linux-gnu/4.8/32/crtbegin.o
attempt to open /tmp/ccZi14Qh.o succeeded
/tmp/ccZi14Qh.o
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libSDL.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libSDL.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libSDL.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libSDL.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libSDL.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libSDL.a failed
attempt to open /lib/i386-linux-gnu/libSDL.so failed
attempt to open /lib/i386-linux-gnu/libSDL.a failed
attempt to open /lib/../lib32/libSDL.so failed
attempt to open /lib/../lib32/libSDL.a failed
attempt to open /usr/lib/i386-linux-gnu/libSDL.so failed
attempt to open /usr/lib/i386-linux-gnu/libSDL.a failed
attempt to open /usr/lib/../lib32/libSDL.so failed
attempt to open /usr/lib/../lib32/libSDL.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/libSDL.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/libSDL.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libSDL.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libSDL.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../libSDL.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../libSDL.a failed
attempt to open /lib/i386-linux-gnu/libSDL.so failed
attempt to open /lib/i386-linux-gnu/libSDL.a failed
attempt to open /usr/lib/i386-linux-gnu/libSDL.so failed
attempt to open /usr/lib/i386-linux-gnu/libSDL.a failed
attempt to open /usr/i386-linux-gnu/lib32/libSDL.so failed
attempt to open /usr/i386-linux-gnu/lib32/libSDL.a failed
attempt to open /usr/x86_64-linux-gnu/lib32/libSDL.so failed
attempt to open /usr/x86_64-linux-gnu/lib32/libSDL.a failed
attempt to open //usr/local/lib/i386-linux-gnu/libSDL.so failed
attempt to open //usr/local/lib/i386-linux-gnu/libSDL.a failed
attempt to open //usr/local/lib32/libSDL.so failed
attempt to open //usr/local/lib32/libSDL.a failed
attempt to open //lib/i386-linux-gnu/libSDL.so failed
attempt to open //lib/i386-linux-gnu/libSDL.a failed
attempt to open //lib32/libSDL.so failed
attempt to open //lib32/libSDL.a failed
attempt to open //usr/lib/i386-linux-gnu/libSDL.so failed
attempt to open //usr/lib/i386-linux-gnu/libSDL.a failed
attempt to open //usr/lib32/libSDL.so failed
attempt to open //usr/lib32/libSDL.a failed
attempt to open //usr/local/lib/libSDL.so failed
attempt to open //usr/local/lib/libSDL.a failed
attempt to open //lib/libSDL.so failed
attempt to open //lib/libSDL.a failed
attempt to open //usr/lib/libSDL.so failed
attempt to open //usr/lib/libSDL.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libgcc.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libgcc.a succeeded
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libgcc_s.so succeeded
-lgcc_s (/usr/lib/gcc/x86_64-linux-gnu/4.8/32/libgcc_s.so)
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libc.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libc.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libc.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libc.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libc.so succeeded
opened script file /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libc.so
opened script file /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libc.so
attempt to open /lib32/libc.so.6 succeeded
/lib32/libc.so.6
attempt to open /usr/lib32/libc_nonshared.a succeeded
(/usr/lib32/libc_nonshared.a)elf-init.oS
attempt to open /lib32/ld-linux.so.2 succeeded
/lib32/ld-linux.so.2
/usr/bin/ld: cannot find -lSDL
collect2: error: ld returned 1 exit status
nux-gnu/4.8/../../../i386-linux-gnu/libSDL.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libSDL.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libSDL.a failed
attempt to open /lib/i386-linux-gnu/libSDL.so failed
attempt to open /lib/i386-linux-gnu/libSDL.a failed
attempt to open /lib/../lib32/libSDL.so failed
attempt to open /lib/../lib32/libSDL.a failed
attempt to open /usr/lib/i386-linux-gnu/libSDL.so failed
attempt to open /usr/lib/i386-linux-gnu/libSDL.a failed
attempt to open /usr/lib/../lib32/libSDL.so failed
attempt to open /usr/lib/../lib32/libSDL.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/libSDL.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/libSDL.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libSDL.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libSDL.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../libSDL.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../libSDL.a failed
attempt to open /lib/i386-linux-gnu/libSDL.so failed
attempt to open /lib/i386-linux-gnu/libSDL.a failed
attempt to open /usr/lib/i386-linux-gnu/libSDL.so failed
attempt to open /usr/lib/i386-linux-gnu/libSDL.a failed
attempt to open /usr/i386-linux-gnu/lib32/libSDL.so failed
attempt to open /usr/i386-linux-gnu/lib32/libSDL.a failed
attempt to open /usr/x86_64-linux-gnu/lib32/libSDL.so failed
attempt to open /usr/x86_64-linux-gnu/lib32/libSDL.a failed
attempt to open //usr/local/lib/i386-linux-gnu/libSDL.so failed
attempt to open //usr/local/lib/i386-linux-gnu/libSDL.a failed
attempt to open //usr/local/lib32/libSDL.so failed
attempt to open //usr/local/lib32/libSDL.a failed
attempt to open //lib/i386-linux-gnu/libSDL.so failed
attempt to open //lib/i386-linux-gnu/libSDL.a failed
attempt to open //lib32/libSDL.so failed
attempt to open //lib32/libSDL.a failed
attempt to open //usr/lib/i386-linux-gnu/libSDL.so failed
attempt to open //usr/lib/i386-linux-gnu/libSDL.a failed
attempt to open //usr/lib32/libSDL.so failed
attempt to open //usr/lib32/libSDL.a failed
attempt to open //usr/local/lib/libSDL.so failed
attempt to open //usr/local/lib/libSDL.a failed
attempt to open //lib/libSDL.so failed
attempt to open //lib/libSDL.a failed
attempt to open //usr/lib/libSDL.so failed
attempt to open //usr/lib/libSDL.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libgcc.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libgcc.a succeeded
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libgcc_s.so succeeded
-lgcc_s (/usr/lib/gcc/x86_64-linux-gnu/4.8/32/libgcc_s.so)
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libc.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libc.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libc.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libc.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libc.so succeeded
opened script file /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libc.so
opened script file /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libc.so
attempt to open /lib32/libc.so.6 succeeded
/lib32/libc.so.6
attempt to open /usr/lib32/libc_nonshared.a succeeded
(/usr/lib32/libc_nonshared.a)elf-init.oS
attempt to open /lib32/ld-linux.so.2 succeeded
/lib32/ld-linux.so.2
/usr/bin/ld: cannot find -lSDL
collect2: error: ld returned 1 exit status

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in libsdl1.2 (Ubuntu):
status: New → Confirmed
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

I know it is a long time, but to close it out since there was a recent bump.

$ gcc main.c -lSDL
But
$
$ gcc main.c -lSDL -m32
/usr/bin/ld: cannot find -lSDL
collect2: error: ld returned 1 exit status

So much as reported.

# install libs
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt-get install libsdl1.2-dev:i386

$ gcc main.c -lSDL -m32
# Working fine now.

Likely no one cares anyway, but I wanted to document the right solution.

Changed in libsdl1.2 (Ubuntu):
status: Confirmed → Opinion
status: Opinion → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.