V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hhhhhh123
V2EX  ›  C

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

  •  
  •   hhhhhh123 · 2022-07-08 17:31:54 +08:00 · 1046 次点击
    这是一个创建于 647 天前的主题,其中的信息可能已经有所发展或是发生改变。

    下面是 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

    第 1 条附言  ·  2022-07-11 09:52:31 +08:00
    已解决 -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 条回复    2022-07-09 13:08:51 +08:00
    thetbw
        1
    thetbw  
       2022-07-08 17:38:28 +08:00
    ${CC} 后面加个 -shared 参数,也可以设置 CFLAGS 环境变量,应该这样的
    hhhhhh123
        2
    hhhhhh123  
    OP
       2022-07-08 17:42:28 +08:00
    @thetbw 每一行都加吗
    qq296015668
        3
    qq296015668  
       2022-07-08 22:50:19 +08:00
    执行 `make` 命令的时候,如果默认不指定参数,会根据 `all:` 的规则执行
    以你的代码为例,执行
    `make` 时,会先执行 `five` 定义的命令,然后执行 `seven` 定义的命令,然后结束。

    编译动态库 dll 的命令大概如下:
    ```
    gcc --share code.c -o code.dll
    ```
    thetbw
        4
    thetbw  
       2022-07-09 13:08:51 +08:00 via Android
    @hhhhhh123 clean 上面那个吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5551 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 06:44 · PVG 14:44 · LAX 23:44 · JFK 02:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.