Makefile编译和链接问题

时间:2021-03-16 21:09:31

标签: c

所以我一直在尝试寻找我目前使用我的 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”部分失败。我真的很感激任何关于我在这里可以做什么的帮助或建议,我现在有点难住了。

0 个答案:

没有答案