我拼命尝试将一堆C文件编译成DLL。我还有Makefile.am
,configure.ac
,autogen.sh
。我已经安装了Mingw和Cygwin(不确定这两者都是个好主意)。我还将PATH
设置为Mingw\bin
。
究竟要做什么,哪个make / config文件要开始?对于谁知道该做什么来说,这看起来很简单。
答案 0 :(得分:2)
首先,避免使用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
(编译源代码时生成)不需要按特定顺序链接,那就足够了。