automake
[Top][All Lists]
Advanced

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

Re: Newbie Automake Problem


From: Václav Haisman
Subject: Re: Newbie Automake Problem
Date: Fri, 1 Jul 2016 19:11:30 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0

On 1.7.2016 16:32, JASON TILLEY wrote:

> I have been editing my Makefile since the original post, so the linker
> is no longer getting ‘-lm -lcsa’. The final lines now look like this:
>
> /bin/sh ./libtool  --tag=CC   --mode=link /opt/local/bin/gcc  -O2 -m64
> -fPIC -g -Wall  -L/opt/local/lib -o csabathy src/csabathy-csa.o
> src/csabathy-svd.o src/csabathy-minell.o libcsa.la -lm -L/opt/local/lib
> libtool: link: /opt/local/bin/gcc -O2 -m64 -fPIC -g -Wall -o
> .libs/csabathy src/csabathy-csa.o src/csabathy-svd.o
> src/csabathy-minell.o  -L/opt/local/lib ./.libs/libcsa.dylib -lm
> Undefined symbols for architecture x86_64:
>   "_main", referenced from:
>      implicit entry/start for main executable
> ld: symbol(s) not found for architecture x86_64
> collect2: error: ld returned 1 exit status
> make: *** [csabathy] Error 1
>
> My Makefile.am contains this currently:
>
> ACLOCAL_AMFLAGS = -I m4 --install
>
> lib_LTLIBRARIES = libcsa.la
> libcsa_la_SOURCES = src/csa.c \
>                     src/svd.c \
>                     src/minell.c
> libcsa_la_LIBADD = -lm

You should not need this done this directly. Use |AC_CHECK_LIB()| or
similar macro in |configure.ac| to detect if you need it.

>
> include_HEADERS = src/csa.h src/svd.h src/minell.h src/nan.h
>
> bin_PROGRAMS = csabathy
> csabathy_SOURCES = src/csa.c \
>                    src/csa.h \
>                    src/svd.c \
>                    src/svd.h \
>                    src/minell.c \
>                    src/minell.h \
>                    src/nan.h

You are using the same sources as the |libcsa.la| library but you are
actually linking to the library for the executable. This does not make
much sense.

Also, remove the |.h| files from the list.

> csabathy_CFLAGS = $(AM_CFLAGS)
> csabathy_LDADD = libcsa.la -lm

|-lm| again.

> csabathy_DEPENDENCIES = src/csa.lo \
>                         src/svd.lo \
>                         src/minell.lo

Why do you need this? I do not think it is necessary. The appropriate
objects are linked in through the |libcsa.la| library.

>
> EXTRA_DIST = /src/m4/NOTES

This should probably not be an absolute path.

>
> Thanks for the help.
>
>
>
>> On Jun 30, 2016, at 11:57 PM, Václav Haisman <address@hidden
>> <mailto:address@hidden>> wrote:
>>
>> On 30 June 2016 at 03:03, JASON TILLEY <address@hidden
>> <mailto:address@hidden>> wrote:
>>> I am trying to create a Makefile.am for a package on github in order
>>> to make it more friendly to packaging
>>> (https://github.com/sakov/csa-c). I am having linking problems on my
>>> Mac. I’m sure its my complete lack of understanding of Automake. My
>>> make command executes the following:
>>>
>>> depbase=`echo src/csa.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
>>>        /bin/sh ./libtool  --tag=CC   --mode=compile gcc
>>> -DHAVE_CONFIG_H -I. -I./src     -g -O2 -MT src/csa.lo -MD -MP -MF
>>> $depbase.Tpo -c -o src/csa.lo src/csa.c &&\
>>>        mv -f $depbase.Tpo $depbase.Plo
>>> libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I./src -g -O2 -MT
>>> src/csa.lo -MD -MP -MF src/.deps/csa.Tpo -c src/csa.c  -fno-common
>>> -DPIC -o src/.libs/csa.o
>>> libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I./src -g -O2 -MT
>>> src/csa.lo -MD -MP -MF src/.deps/csa.Tpo -c src/csa.c -o src/csa.o
>>> >/dev/null 2>&1
>>> depbase=`echo src/svd.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
>>>        /bin/sh ./libtool  --tag=CC   --mode=compile gcc
>>> -DHAVE_CONFIG_H -I. -I./src     -g -O2 -MT src/svd.lo -MD -MP -MF
>>> $depbase.Tpo -c -o src/svd.lo src/svd.c &&\
>>>        mv -f $depbase.Tpo $depbase.Plo
>>> libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I./src -g -O2 -MT
>>> src/svd.lo -MD -MP -MF src/.deps/svd.Tpo -c src/svd.c  -fno-common
>>> -DPIC -o src/.libs/svd.o
>>> libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I./src -g -O2 -MT
>>> src/svd.lo -MD -MP -MF src/.deps/svd.Tpo -c src/svd.c -o src/svd.o
>>> >/dev/null 2>&1
>>> depbase=`echo src/minell.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
>>>        /bin/sh ./libtool  --tag=CC   --mode=compile gcc
>>> -DHAVE_CONFIG_H -I. -I./src     -g -O2 -MT src/minell.lo -MD -MP -MF
>>> $depbase.Tpo -c -o src/minell.lo src/minell.c &&\
>>>        mv -f $depbase.Tpo $depbase.Plo
>>> libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I./src -g -O2 -MT
>>> src/minell.lo -MD -MP -MF src/.deps/minell.Tpo -c src/minell.c
>>>  -fno-common -DPIC -o src/.libs/minell.o
>>> libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I./src -g -O2 -MT
>>> src/minell.lo -MD -MP -MF src/.deps/minell.Tpo -c src/minell.c -o
>>> src/minell.o >/dev/null 2>&1
>>> /bin/sh ./libtool  --tag=CC   --mode=link gcc  -g -O2   -o libcsa.la
>>> -rpath /usr/local/lib src/csa.lo src/svd.lo src/minell.lo
>>> libtool: link: gcc -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -o
>>> .libs/libcsa.0.dylib  src/.libs/csa.o src/.libs/svd.o
>>> src/.libs/minell.o    -g -O2   -install_name
>>>  /usr/local/lib/libcsa.0.dylib -compatibility_version 1
>>> -current_version 1.0 -Wl,-single_module
>>> libtool: link: (cd ".libs" && rm -f "libcsa.dylib" && ln -s
>>> "libcsa.0.dylib" "libcsa.dylib")
>>> libtool: link: ar cru .libs/libcsa.a  src/csa.o src/svd.o src/minell.o
>>> libtool: link: ranlib .libs/libcsa.a
>>> libtool: link: ( cd ".libs" && rm -f "libcsa.la" && ln -s
>>> "../libcsa.la" "libcsa.la" )
>>> gcc -DHAVE_CONFIG_H -I. -I./src     -g -O2 -MT src/csabathy-csa.o
>>> -MD -MP -MF src/.deps/csabathy-csa.Tpo -c -o src/csabathy-csa.o
>>> `test -f 'src/csa.c' || echo './'`src/csa.c
>>> mv -f src/.deps/csabathy-csa.Tpo src/.deps/csabathy-csa.Po
>>> gcc -DHAVE_CONFIG_H -I. -I./src     -g -O2 -MT src/csabathy-svd.o
>>> -MD -MP -MF src/.deps/csabathy-svd.Tpo -c -o src/csabathy-svd.o
>>> `test -f 'src/svd.c' || echo './'`src/svd.c
>>> mv -f src/.deps/csabathy-svd.Tpo src/.deps/csabathy-svd.Po
>>> gcc -DHAVE_CONFIG_H -I. -I./src     -g -O2 -MT src/csabathy-minell.o
>>> -MD -MP -MF src/.deps/csabathy-minell.Tpo -c -o
>>> src/csabathy-minell.o `test -f 'src/minell.c' || echo './'`src/minell.c
>>> mv -f src/.deps/csabathy-minell.Tpo src/.deps/csabathy-minell.Po
>>> /bin/sh ./libtool  --tag=CC   --mode=link gcc  -g -O2 '-lm -lcsa'
>>>  -o csabathy src/csabathy-csa.o src/csabathy-svd.o
>>> src/csabathy-minell.o libcsa.la
>>> libtool: link: gcc -g -O2 -o .libs/csabathy src/csabathy-csa.o
>>> src/csabathy-svd.o src/csabathy-minell.o  -lm
>>> /Users/username/Downloads/csa-c-master/.libs/libcsa.dylib
>>> ./.libs/libcsa.dylib
>>> Undefined symbols for architecture x86_64:
>>>  "_main", referenced from:
>>>     implicit entry/start for main executable
>>> ld: symbol(s) not found for architecture x86_64
>>> collect2: error: ld returned 1 exit status
>>> make: *** [csabathy] Error 1
>>>
>>> Does anyone know what this error means? Thanks.
>>
>> Where is the Makefile.am? We need to see that to be able to diagnose
>> your issue.
>>
>> At least the '-lm -lcsa' argument on the linking command looks fishy.
>>
>> -- 
>> VH
>
​

-- 
VH

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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