On Fri, Mar 29, 2013 at 10:29 AM, Chung-Ju Wu <jasonwucj@xxxxxxxxx> wrote: > 2013/3/29 Ian Lance Taylor <iant@xxxxxxxxxx>: >> On Fri, Mar 29, 2013 at 7:56 AM, Miguel Guedes >> <miguel.a.guedes@xxxxxxxxx> wrote: >>> I take it you don't think there's anything wrong with GCC? Is the >>> different behaviour between GCC and clang expected in this case? >> >> OK, I looked a bit closer, and I see the problem. You are listing the >> -l options before the .o files. With GCC, that means that the -l >> options are effectively ignored. I guess clang must rearrange the -l >> options in that case, although I don't know how that could work >> reliably while preserving Unix linking semantics. >> >> Move your -l options after your .o files. >> >> Ian > > > To my understanding, the linking order is required for static libraries. > There is no order requirement for object files or dynamic libraries. That is approximately but not precisely true. There are a number of ways in which the relative ordering of object files and dynamic libraries can change the linker behaviour. You are right that if no unusual options are used and no .a files are used that there is likely to be no difference. Ian