我拼命尝试将一堆C文件编译成DLL。我也有Makefile.am
,,,configure.ac
。autogen.sh
我已经安装了 Mingw 和 Cygwin(不确定两者兼有)。我也设置PATH
为Mingw\bin
.
究竟要做什么,从哪个 make/config 文件开始?对于谁知道该做什么来说,这似乎是一项简单的任务。
我拼命尝试将一堆C文件编译成DLL。我也有Makefile.am
,,,configure.ac
。autogen.sh
我已经安装了 Mingw 和 Cygwin(不确定两者兼有)。我也设置PATH
为Mingw\bin
.
究竟要做什么,从哪个 make/config 文件开始?对于谁知道该做什么来说,这似乎是一项简单的任务。
首先,避免使用 Cygwin。MINGW应该足够了。
在尝试构建您的 DLL 之前,请确保您的 MINGW 安装按预期工作(尝试一个简单的“hello world”程序)。
在您验证您可以编译一个简单的 C 文件并将其链接到一个工作可执行文件之后,您可以尝试使用一种非常简单的方法,使用 Windows 批处理文件。
尝试根据您的需要调整以下内容。您应该将它放在放置所有 C 文件的同一目录中,然后运行它。我假设您可以从命令行调用gcc
(即 GCC 可执行文件必须在您的路径上)。
@echo off
::
:: file "build.cmd"
::
setlocal
set CWARNS=-pedantic -Wall -Wextra ^
-Waggregate-return -Wbad-function-cast -Wcast-align -Wcast-qual ^
-Wdeclaration-after-statement -Wdisabled-optimization ^
-Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wshadow ^
-Wsign-compare -Wstrict-prototypes -Wundef -Wwrite-strings -Wunreachable-code
set CFLAGS=-O2
set COMPILE=gcc -c %CFLAGS% %CWARNS%
%COMPILE% file1.c
%COMPILE% file2.c
%COMPILE% file3.c
gcc -shared file1.o file2.o file3.o -o mydllname.dll
它不能保证工作,但如果您的项目没有外部依赖项并且file*.o
(在编译源代码时产生)不需要以特定顺序链接,它应该足够了。