0

私は小さなプログラムを持っていますが、実行するとmakeこのエラーが表示されます:

$ make
make  all-recursive
make[1]: se ingresa al directorio «/home/foo/boolham»
Making all in src
make[2]: se ingresa al directorio «/home/foo/boolham/src»
/bin/bash ../libtool --tag=CC   --mode=link gcc -std=gnu99  -g -O2   -o set set.o  
libtool: link: gcc -std=gnu99 -g -O2 -o set set.o 
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status
make[2]: *** [set] Error 1
make[2]: se sale del directorio «/home/foo/boolham/src»
make[1]: *** [all-recursive] Error 1
make[1]: se sale del directorio «/home/foo/boolham»
make: *** [all] Error 2

Makefile.amは持っています:

lib_LTLIBRARIES = libfsequence.la
libfsequence_la_SOURCES = fsequence.c fsequence.h

bin_PROGRAMS = set main

main_SOURCES = main.c main.h
set_SOURCES = set.c set.h

main_LDADD = libfsequence.la

main.cint main()関数のみを持ち、関数set.cを設定し、fsequences.c数列を生成する関数を持っています。には、ユーティリティ関数としてfsequences.c含まれ、 が含まれます。set.hmain.cfsequences.h

コードの何が問題になっていますか?

4

1 に答える 1

2

少し暗めのショットですが、あなたの set.c ファイルは main のないファイルだと思います。次に、それをプログラムとして扱うべきではありません - -c オプションでコンパイルする必要があります (したがって、.o ファイルが生成され、main にリンクされます)。

私は autotools に詳しくありませんが、その方法の例を確認する必要があります。

編集:

によると:http : //socgsa.cs.clemson.edu/seminar/tools06/resources/08_autotools/automake.htm「bin_PROGRAMS」から「set」を削除するだけです

于 2013-09-12T07:10:36.340 に答える