gpt4 book ai didi

c - GCC 编译器拒绝查看 Main 方法(C 编程)

转载 作者:太空狗 更新时间:2023-10-29 11:19:33 26 4
gpt4 key购买 nike

我最近从以下地址下载了 AGIL 冒险游戏解释器:http://www.agidev.com/dl_files/agil-0.1.5.tar.gz

这是一个 C 程序,可以运行 King's Quest 等老式 Sierra 冒险游戏。

我一直在尝试编译源代码,以便调试它并了解它是如何工作的。

然而,尽管我尽了最大努力,但 GCC 编译器从未看到 main 方法,尽管它存在。

这是编译器的输出:

make linsdl all 
make -fMakefile.sdl
make[1]: Entering directory `/home/alay/Downloads/AGIL/agil'
gcc -O -Wall -Isrc/include -I/usr/local/include -DTARGET_SDL -fstrength-reduce -fomit-frame-pointer -pedantic -I/usr/local/include/SDL -Dmain=SDL_main -c src/main.c -o bin/main.o
gcc -O -Wall -Isrc/include -I/usr/local/include -DTARGET_SDL -fstrength-reduce -fomit-frame-pointer -pedantic -I/usr/local/include/SDL -Dmain=SDL_main -c src/drivers/sdl.c -o bin/driver.o
gcc -L/usr/local/lib bin/main.o bin/general.o bin/event.o bin/graphics.o bin/menu.o bin/text.o bin/resource.o bin/gameid.o bin/pic_op.o bin/picture.o bin/lzw.o bin/vm.o bin/actionop.o bin/testop.o bin/status.o bin/object.o bin/view.o bin/check.o bin/save.o bin/message.o bin/sound.o bin/decomp.o bin/driver.o \
-o bin/agil -lm -lSDLmain -lSDL -lpthread
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In function `_start':
make[1]: Leaving directory `/home/alay/Downloads/AGIL/agil'
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status
make[1]: *** [all] Error 1
make: *** [linsdl] Error 2

我所做的唯一更改是更改包含语句,以便编译器可以找到 SDL 库。例如,我将:#include "SDL.h" 更改为 #include "SDL/SDL.h"

我的目标是理解 C 代码,以便我可以在另一个平台上构建类似的东西。

最佳答案

-Dmain=SDL_main 相当于在您的代码中有一个#define main SDL_main。预处理器将用 SDL_main 替换 main,链接器将找不到它(因为它不存在)。

运行 gcc -E ... 并查看代码在预处理器运行之后、进入编译器之前的样子。

LE:是的。但我不会将它作为参数传递给 gcc(并更改头文件)。但它作为包含之后的定义。

同时运行 locate libsdl 并检查是否将路径正确传递给了链接器。

关于c - GCC 编译器拒绝查看 Main 方法(C 编程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18532066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com