好的,所以我需要为我编写的程序制作一个基本的 Makefile。以下是文件:
list.c
hash.c
order_book.c
libdefault_hash.a //provided already so I do not need to create.
我需要为 list.c 和 hash.c 创建库,以便订单簿在编译时可以使用它们。所以这就是我目前拥有的Makefile
:
all: orderbook
orderbook: orderbook.c liblist.a libhash.a
gcc -std=c99 -o orderbook order_book.c list.c -L. -llist -lhash -libdefault_hash
liblist.a: list.c
gcc -std=c99 -c list.c
ar rcu liblist.a list.o
libhash.a: hash.c
gcc -std=c99 -c hash.c
ar rcu libhash.a hash.o
我对 makefile 如何工作的了解非常少,但这是我的思考过程,
all: orderbook
将意味着orderbook:
它将运行。orderbook.c
然后将编译,然后代码将编译库。编译库后,它将运行:
gcc -std=c99 -o orderbook order_book.c list.c -L. -llist -lhash -libdefault_hash
结果应该是一个名为 orderbook 的简单程序文件,但终端会打印出:
$ make
gcc -std=c99 -o orderbook order_book.c list.c hash.c -L. -llist -lhash -libdefault_hash
/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/../../../../x86_64-pc-linux-gnu/bin/ld: skipping incompatible ./liblist.a when searching for -llist
/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -llist
/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -libdefault_hash
collect2: ld returned 1 exit status
make: *** [orderbook] Error 1
$
非常感谢任何帮助/指导。