所以我一直在尝试寻找我目前使用我的 make 文件的解决方案。我收到错误:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
我的 src 文件夹中有 5 个文件:find.c、rebalance.c、remove.c、lib.c 和 insert.c。在我的 src/bin 文件夹中,我只有 main.c,而在 src 之外的另一个文件夹“include”中,我有 bst.h。这是我的 makefile 的样子:
all: static bin shared
mkdir -p build/bin
mkdir -p build/lib
mkdir -p build/objects
mv *.o build/objects
mv *.a build/lib
mv main build/bin
mv libbst.so build/lib
static:
gcc src/lib.c -c -I include
gcc src/find.c -c -I include
gcc src/insert.c -c -I include
gcc src/rebalance.c -c -I include
gcc src/remove.c -c -I include
ar rcs libbst.a find.o insert.o lib.o rebalance.o remove.o
shared:
gcc -c -o lib.o src/lib.c
gcc -c -o find.o src/find.c
gcc -c -o insert.o src/insert.c
gcc -c -o rebalance.o src/rebalance.c
gcc -c -o remove.o src/remove.c
gcc -shared -o libbst.so find.o insert.o lib.o rebalance.o remove.o
bin:
gcc src/lib.c -c -I include
gcc lib.o -o lib -lbst -L.
gcc src/bin/main.c -c -I include
gcc main.o -o main -lbst -L.
clean:
rm -rf *.so *.a *.o main build
install:
我假设我只是没有使用正确的命令将所有内容链接在一起。这总是在 Makefile 的“bin”部分失败。我真的很感激任何关于我在这里可以做什么的帮助或建议,我现在有点难住了。