help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNU make 4.1 does not load libpthread


From: Yann Droneaud
Subject: Re: GNU make 4.1 does not load libpthread
Date: Tue, 06 Sep 2016 09:33:32 +0200

Le mardi 06 septembre 2016 à 08:30 +0800, 彭怀敏 a écrit :
> Hi, I am using Ubuntu16.04, with GNU make 4.1.
> I was failed while built my project which referenced to libpthread
> and libm, but it was OK while used Ubuntu10.04 with GNU make 3.81.
> I found the difference of the "strace make" output between the two
> versions of make, that LD will open libpthread after open libc in
> v3.81, but it will not open libpthread in v4.1, and thus I got a lot
> of "undefined reference to", and "collect2: error: ld returned 1 exit
> status".
> 

It's likely not related to make: your toolchains (binutils, gcc) and
libraries are differents between Ubuntu from 2010 and Ubuntu from 2014.

> Here is part of my makefile, a simple makefile:
> 
> OBJS = median.o EventParam.o Filter.o OtdrAlgo.o Otdr.o \
>        OtdrEdma.o OtdrMain.o OtdrTable.o NetworkSocket.o \
>        Utility.o OtdrTouch.o Event.o
> 
> CFLAGS = -g -Wall
> LDFLAGS = -lm -lpthread
> 

-lm -lpthread should not be in variable $(LDFLAGS) as it's passed
before the object file to link.

For example, put them in $(LIBS)

LIBS := -lm -lpthread


> #CROSS_COMPILE = /opt/itop/4.3.2/bin/arm-linux-
> 
> linuxotdr: $(OBJS)
>     $(CROSS_COMPILE)gcc $(CFLAGS) $(LDFLAGS) -o $@ $^
> 

Libraries should be listed after the object files that might need them:

With the previous change, use recipe instead:

        $(CROSS_COMPILE)gcc $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)


> Event.o : Event.c Otdr.h prototypes.h protocol.h DspFpgaReg.h
>     $(CROSS_COMPILE)gcc -c $(CFLAGS)   $^
> .........
> 
> I don't know how to solve it, could you help me?
> Thanks very much.
> 
> 

Regards.

-- 
Yann Droneaud
OPTEYA




reply via email to

[Prev in Thread] Current Thread [Next in Thread]