使用GM2编译Modula-2 Hello World遇_M2_Hello_init未定义引用错误求助
GM2编译ISO Modula-2代码时出现
undefined reference to _M2_Hello_init/_M2_Hello_finish错误 解决方法
1. 安装对应版本的GM2运行时库
Ubuntu环境下,先确保已安装适配gm2 11.4.0的标准库:
sudo apt install gm2-11-libs
2. 修改编译命令,显式链接ISO标准库
原编译命令缺少ISO Modula-2模式下的运行时库链接参数,将命令改为:
gm2 -fiso hello.mod -lm2iso
也可以分两步完成编译与链接:
# 编译生成目标文件 gm2 -c -fiso hello.mod -o hello.o # 链接生成可执行文件 gm2 hello.o -lm2iso -o hello
原因说明
当使用-fiso开关启用ISO Modula-2方言时,GM2编译器不会自动链接对应的ISO标准运行时库。这些库包含了模块初始化(_M2_*_init)和清理(_M2_*_finish)相关的符号,手动添加-lm2iso参数可以让链接器找到这些缺失的符号,完成编译流程。
内容的提问来源于stack exchange,提问作者kristianp
相关产品推荐
相关产品推荐

