[Scons-users] How to force flags order when linking static libraries

Davide Coppola vivaladav at gmail.com
Tue Mar 11 12:10:31 EDT 2014


Hi,

I'm trying to build a program which is linked against a static library
(SDL2) built with Scons as well.
The problem is that the final linking phase fails because of the order of
the flags.

This is the final command generated by Scons:

g++ -o bin/debug/game/bof -lSDL2 -lpthread -Wl,--no-undefined -lm -ldl -lts
-lpthread -lrt build/debug/game/tmp_src/main.o -Lbuild/debug/libs/SDL2
-Lsrc/libs/SDL2 -lSDL2

which raises a lot of errors like

build/debug/libs/SDL2/libSDL2.a(SDL_dynapi.o): In function
`get_sdlapi_entry':
SDL_dynapi.c:(.text+0xc76c): undefined reference to `dlopen'
SDL_dynapi.c:(.text+0xc78a): undefined reference to `dlsym'
...
build/debug/libs/SDL2/libSDL2.a(SDL_sysmutex.o): In function
`SDL_CreateMutex_REAL':
SDL_sysmutex.c:(.text+0x39): undefined reference to `pthread_mutexattr_init'
SDL_sysmutex.c:(.text+0x4a): undefined reference to
`pthread_mutexattr_settype'
....

whereas running g++ with the following parameters succeed:

g++ -o bin/debug/game/bof build/debug/game/tmp_src/main.o
-Lbuild/debug/libs/SDL2 -Lsrc/libs/SDL2 -lSDL2 -lpthread -Wl,--no-undefined
-lm -ldl -lts -lpthread -lrt

I understand the problem is the order the libraries are linked against the
executable, but I can't find a way to force such order in Scons.


The SConsript to build the program is called by the following command:

SConscript('src/game/SConscript', exports = 'env', variant_dir = 'build/' +
env['mode'], src_dir = 'src', duplicate = 0)

and it looks like this:

Import('env')

sources = Split(""" tmp_src/main.cpp """)

env.Append(CPPPATH=['#/src/libs/SDL2/include'])

env.Append(CCFLAGS = ['-D_REENTRANT'])
env.Append(LINKFLAGS=['-lSDL2', '-lpthread', '-Wl,--no-undefined', '-lm',
'-ldl', '-lts', '-lpthread', '-lrt'])

env.Program('#/bin/%s/game/bof' % env['mode'], sources, LIBS = ['SDL2'],
LIBPATH = ['../libs/SDL2'] )


Any suggestion?

--
Davide Coppola

*website:* http://www.davidecoppola.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://four.pairlist.net/pipermail/scons-users/attachments/20140311/3e42980a/attachment.htm


More information about the Scons-users mailing list