我目前正在从事winexe项目。 winexe使用-mno-cygwin作为CFLAGS在linux上编译Windows C代码。
以下是目录winexesvc下的Makefile:-
CFLAGS=-mno-cygwin -Os
LDFLAGS=-mno-cygwin -s -Os
CC_WIN32 := $(shell bash -c 'which {i386,i586}-{mingw32,mingw32msvc}-gcc')
CC_WIN64 := $(shell bash -c 'which {x86_64,amd64}-{mingw32,mingw32msvc}-gcc')
all: winexesvc32_exe.c winexesvc64_exe.c
winexesvc32.exe: winexesvc32.o service32.o
$(CC_WIN32) $(LDFLAGS) -o $@ $^
winexesvc64.exe: winexesvc64.o service64.o
$(CC_WIN64) $(LDFLAGS) -o $@ $^
%32.o: %.c
$(CC_WIN32) -c $(CPPFLAGS) $(CFLAGS) -o $@ $^
%64.o: %.c
$(CC_WIN64) -c $(CPPFLAGS) $(CFLAGS) -o $@ $^
winexesvc32_exe.c: winexesvc32.exe bin2c.exe
./bin2c.exe winexesvc32_exe winexesvc32.exe > $@
winexesvc64_exe.c: winexesvc64.exe bin2c.exe
./bin2c.exe winexesvc64_exe winexesvc64.exe > $@
bin2c.exe: bin2c.c
gcc -s -o $@ $^
clean:
-@rm *.exe *.o *_exe.c
如果不做任何修改,整个代码将编译并成功运行。
但是,每当我替换winexsvc.c文件或winexesvc64_exe.c文件或winexesvc32_exe.c文件时
(我需要修改这3个文件)。当我用修改后的代码替换winexesvc.c时,它显示以下错误。修改后的代码不会调用任何其他文件或该文件之外的任何函数。
所以,问题是当我在上述3个文件中进行一些修改时,出现上述错误。
知道为什么会这样吗?
附言:-我已经阅读了有关gcc中-mno-cygwin选项错误的其他文章。
但是这些与我的问题无关。
附加信息 :-
[我是从winexe下winexesvc文件夹的Makefile中获得的。]
最佳答案
解决了 :-
我使用了i586-mingw32msvc-gcc命令以及适当的标志来手动编译每个文件,然后进行相应的链接。
得到了所需的结果。
关于c - 在GCC 4.6中使用-mno-cygwin选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14041916/