preserving order of linker flags

Stefan Vigerske stefan at
Sat Jan 22 06:41:24 PST 2011


in our buildsystem, there can be unfortunate situations where the 
"Libs:" line of a .pc file contains libraries that are referenced once 
by their absolute path and once via -L,-l syntax, e.g., -l1 /mine/lib2.a
Now, the first library may depend on the second one, which in a static 
build requires to have /mine/lib2.a after -l1 on the linker line.
However, pkg-config seem to reorder the flags by moving the second 
library to the front. :-(
Is there any way how to avoid this behaviour, i.e., to tell pkg-config 
to keep the relative order of the entries in the "Libs:" field?

To reproduce, consider a file a.pc with content:
Name: a
Version: 1.0
Description: a
Libs: -l1 /mine/lib2.a

Then "PKG_CONFIG_PATH=. pkg-config --libs a" gives
/mine/lib2.a -l1

Thank you,

PS: Reformulating /mine/lib2.a as -L/mine -l2 is not possible since, 
first, these are linker flags provided by a user from "outside", and, 
second, because /mine/lib2.a is used since there is already a 
/usr/lib/lib2.a, which may be choosen instead of /mine/lib2.a, if the 
-L,-l syntax is used.

More information about the pkg-config mailing list