我正在使用 InstallJammer 为我的应用程序(Windows、Linux 和 Mac)构建跨平台安装程序。但是,InstallJammer 开发已经停止,官方论坛现已关闭。
我需要为 Windows 构建 installkit,因为我必须对 Windows 安装清单进行一些更改,以添加 Windows 7 支持(否则安装程序会显示消息“此程序可能未正确安装”)。
我从这里获取了最新的 installkit 资源:http: //sourceforge.net/projects/installjammer/files/installkit/1.2.15/installkit-1.2.15.tar.gz/download
我发现这个主题http://www.installjammer.com/forums/viewtopic.php?f=3&p=9258帮助我入门。
我获取了最新版本的 MinGW 并输入了 ./configure && make。它启动了构建过程,但是在尝试编译 TCL 时出现了这个错误:
c:/installkit-1.2.15/src/tcl/win/tclWinReg.c:750:29: error: lvalue required as increment operand
由于这些来源有点旧,我想我应该尝试使用旧的 GCC 版本(我使用的是 4.7.2)。于是我将MinGW的GCC降级到3.4.5版,又试了一次。
这一次,TCL建好了。一切进展顺利,直到它未能构建一个名为“miniarc”的东西(我不知道它是什么),并出现以下错误消息:
miniarc.o:miniarc.c:(.text+0x370c): undefined reference to `_imp__strtoull'
miniarc.o:miniarc.c:(.text+0x37c9): undefined reference to `_imp__strtoull'
miniarc.o:miniarc.c:(.text+0x3cb6): undefined reference to `_imp__strtoull'
miniarc.o:miniarc.c:(.text+0x3e78): undefined reference to `_imp__strtoull'
miniarc.o:miniarc.c:(.text+0x3e9f): undefined reference to `_imp__strtoull'
miniarc.o:miniarc.c:(.text+0x3ff5): more undefined references to `_imp__strtoull' follow
collect2: ld returned 1 exit status
奇怪的是在 miniarc.c 中没有提到imp _strtoull。
继续前进,我尝试在 Ubuntu 中构建它,因为我不知道还能做什么,而且它成功了!GCC 版本是 4.4.3。所以我去为 MinGW 搜索 GCC 4.4.3,但最接近的版本是 4.4.0。我抓住这些并再次尝试。相同的 tcl 构建错误(关于 tclWinReg.c)。
然后我回到 GCC 4.7.2 并用最新的 (8.5) 替换 TCL & TK 源 (8.4) 并再次尝试。
TCL 和 TK 都构建得很好,其他一些库也是如此,但是当涉及到“miniarc”时,它又失败了。这次出现了不同的错误:
undefined reference to `TclIncrVar2'
显然,该功能在 TCL 8.5 中不再存在。
所以,我没有想法。我什至尝试给最初的(也是唯一的)InstallJammer 开发人员发送电子邮件,但仍然没有得到答复(我什至不知道他的电子邮件是否相同)。
有没有人有什么建议?
编辑:我应该补充一点,我对 Makefiles 的经验很少,我最后一次用 C 编码是 8 年前的大学。所以,如果我没有注意到这一切有什么明显的地方,我深表歉意。