【问题标题】:Building InstallJammer's installkit on Windows在 Windows 上构建 InstallJammer 的 installkit
【发布时间】:2012-11-28 19:30:19
【问题描述】:

我正在使用 InstallJammer 为我的应用程序(Windows、Linux 和 Mac)构建跨平台安装程序。但是,InstallJammer 开发已停止,官方论坛现已关闭。

我需要为 Windows 构建 installkit,因为我必须对 Windows 安装清单进行一些更改,以添加 Windows 7 支持(否则安装程序会显示消息“此程序可能未正确安装” )。

我从这里获取了最新的安装包源: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 开发人员发送电子邮件,但仍然没有得到答复(我什至不知道他的电子邮件是否相同)。

有人有什么建议吗?

编辑:我应该补充一点,我对 Makefile 的经验很少,我最后一次用 C 编写代码是 8 年前的大学。所以,如果我没有注意到这一切有什么明显的地方,我深表歉意。

【问题讨论】:

    标签: gcc makefile mingw32


    【解决方案1】:

    我不喜欢这个解决方案,但这是我的工作方式:

    1. 使用 GCC 3.4.5,我通过键入 ./configure && make; 开始了制作过程
    2. make 过程在到达“miniarc”时停止并出现错误(如上所述);
    3. 然后,我手动从文件 strtoull.o 构建了一个 DLL (strtoull.dll)(下面是我输入的确切命令行);

      gcc -pipe -shared -o strtoull.dll strtoull.o -lz -L/c/installkit-1.2.15/Windows/lib /c/installkit-1.2.15/Windows/lib/libtclstub84s.a"
      
    4. 之后,我将 strtoull.dll 复制到 miniarc/build 和 windows/system32;

    5. 然后我进入文件夹 miniarc/build 并输入:

      gcc -pipe -shared -o miniarc01.dll miniarc.o sha1.o md5.o -lz -L/c/installkit-1.2.15/Windows/lib  "/c/installkit-1.2.15/Windows/lib/libtclstub84s.a" strtoull.dll
      
    6. 最后,我再次输入 make 以便它可以继续构建其余的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多