C-在GCC 4.6中使用-MNO -Cygwin选项



我目前正在从事Winexe项目。Winexe使用-mno -cygwin作为cflags在Linux上编译Windows C代码。

以下是Directory 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 file或winexesvc32_exe.c.c(我需要修改这3个文件)。当我用修改的代码替换Winexesvc.c时,它显示了以下错误。修改后的代码未调用文件外的任何其他文件或任何功能。

因此,问题是当我在上述3个文件中进行一些修改时,我在上面提到的错误。知道为什么会发生这种情况吗?

P.S: - 我读过有关GCC中-Mno-Cygwin选项错误的其他文章。但是这些与我的问题无关。附加信息 :-[我从Winexe下的Winexesvc文件夹的makefile那里得到了。]

已解决: - 我使用i586-MingW32MSVC-GCC命令以及合适的标志来手工编译每个文件,然后相应地链接。

获得了所需的结果。

最新更新