我有一个 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.
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=
必须写出路径