编译 C 项目时包含 pdcurses 时出错

问题描述 投票:0回答:1

我有一个 test-2.c 文件,其中包含curses.h

#include "pdcurses/curses.h"
pdcurses 文件夹与我的 .c 文件位于同一目录中 如何使用 gcc 编译它?

我想在Windows上将其编译成.exe文件。 我尝试了这些命令,但没有一个起作用

gcc test-2.c -I \PDCurses -L PDCurses\wincon -lpdcurses -o test-2.exe

gcc -o test-2.exe test-2.c -Lpdcurses -lcurses

执行这些命令后出现错误

cc1.exe: fatal error: test-2.c: No such file or directory compilation terminated.

c windows pdcurses
1个回答
0
投票

静态库

gcc -c pdcurses/curses.c -o pdcurses/curses.obj
#                                           ^ You can also type ".o"

如果您有多个源文件,请将它们也编译为

curses.c

ar rcs pdcurses/libcurses.lib pdcurses/curses.obj # And your other modules
#                         ^ You can also type ".a"
gcc -Lpdcurses -lcurses test-2.c -o curses.exe

动态库

这是一个静态库, 如果你需要一款动态的, 您需要执行以下操作:

gcc -shared -o pdcurses/libcurses.dll pdcurses/curses.c # And another modules
#                                 ^ Or ".so"
gcc test-2.c -Lpdcurses -lcurses -Wl,-rpath=pdcurses -o test.exe
#                                   ^ Without space char

说明

静态

首先我们使用

gcc

将源文件编译为目标文件

接下来我们使用

ar

将所有目标文件链接到一个库中

库名称必须

lib

开头

最后,我们也使用

gcc

制作了一个可执行文件
  • -L
    - 指定库所在的目录

在此标志后,必须写入目录的路径,标志后不能有空格

  • -l
    - 这是图书馆本身

你需要写lib名称,标志后面也不能有空格

使用

lib
标志时,请勿包含
-l
前缀

这正是

-L
标志的用途

动态

首先我们制作了lib

  • -shared
    - 需要创建专门一个库

名称也必须以

lib

开头

接下来我们制作一个可执行文件

-L
-l
工作方式相同

-Wl,-rpath=
- 执行文件时lib应位于的路径

之后

-rpath=
必须写出路径

© www.soinside.com 2019 - 2024. All rights reserved.