I拼命地试图将一堆C文件编译到DLL中。我还有Makefile.am
,configure.ac
,autogen.sh
。我已经安装了Mingw和Cygwin(不确定两者都安装是个好主意)。我还将PATH
设置为Mingwbin
。
到底该怎么办,从哪个make/config文件开始?对于知道该做什么的人来说,这似乎是一项简单的任务。
首先,避免Cygwin。MINGW应该足够了。
在尝试构建DLL之前,请确保MINGW安装按预期运行(尝试一个简单的"helloworld"程序)。
在验证了您可以编译一个简单的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
(在编译源代码时生成)不需要按特定顺序链接,那么就足够了。