V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
hhhhhh123
V2EX  ›  C

求大哥帮忙解析下 makefile 文件里的参数

  •  
  •   hhhhhh123 · Jul 8, 2022 · 1781 views
    This topic created in 1394 days ago, the information mentioned may be changed or developed.

    下面是 makefile 文件代码, 生成的是.exe ,我想改成 dll 文件,但是不知道改什么。 看网上的一些例子,但是没有找到关键点。 希望有大佬帮忙分析下 1. 每行是什么意思。2.怎么改参数生成为 dll 文件

    CC=gcc

    all: five seven

    five: test/five.o src/evaluator5.o src/hash.o src/hashtable.o src/hashtable5.o src/hashtable7.o src/dptables.o
    ${CC} ${CFLAGS} $^ -o $@

    seven: test/seven.o src/evaluator7.o src/hash.o src/hashtable.o src/hashtable5.o src/hashtable7.o src/dptables.o
    ${CC} ${CFLAGS} $^ -o $@

    %.o: %.c
    ${CC} -c ${CFLAGS} $< -o $@

    clean:
    rm -f src/.o test/.o *.o five seven

    Supplement 1  ·  Jul 11, 2022
    已解决 -shared 肯定是要加的, 后面加个.dll 后缀, 因为编译的时候 gcc 命令 没有.dll 后缀,所以要加个。

    seven: test/seven.o src/evaluator7.o src/hash.o src/hashtable.o src/hashtable5.o src/hashtable7.o src/dptables.o
    ${CC} -shared ${CFLAGS} $^ -o [email protected]
    4 replies    2022-07-09 13:08:51 +08:00
    thetbw
        1
    thetbw  
       Jul 8, 2022
    ${CC} 后面加个 -shared 参数,也可以设置 CFLAGS 环境变量,应该这样的
    hhhhhh123
        2
    hhhhhh123  
    OP
       Jul 8, 2022
    @thetbw 每一行都加吗
    qq296015668
        3
    qq296015668  
       Jul 8, 2022
    执行 `make` 命令的时候,如果默认不指定参数,会根据 `all:` 的规则执行
    以你的代码为例,执行
    `make` 时,会先执行 `five` 定义的命令,然后执行 `seven` 定义的命令,然后结束。

    编译动态库 dll 的命令大概如下:
    ```
    gcc --share code.c -o code.dll
    ```
    thetbw
        4
    thetbw  
       Jul 9, 2022 via Android
    @hhhhhh123 clean 上面那个吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2155 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 00:27 · PVG 08:27 · LAX 17:27 · JFK 20:27
    ♥ Do have faith in what you're doing.