在Windows上构建InstallJammer的installkit

时间:2012-11-28 19:30:20

标签: gcc makefile mingw32

我正在使用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&&使。它启动了构建过程,但在尝试编译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。所以我去寻找GCC 4.4.3 for MinGW,但最接近的版本是4.4.0。我抓住了这些并再次尝试。相同的tcl构建错误(关于tclWinReg.c)。

然后我回到GCC 4.7.2并取代了TCL& TK来源(8.4)与最新的(8.5)并再次尝试。

TCL和TK都很好,其他一些lib也是如此,但是当它涉及'miniarc'时,它又失败了。这次有一个不同的错误:

undefined reference to `TclIncrVar2'

显然,TCL 8.5中不再存在此功能。

所以,我没有想法。我甚至尝试通过电子邮件发送原始(也是唯一的)InstallJammer开发人员,但仍然没有答案(我甚至不知道他的电子邮件是否相同)。

有人有任何建议吗?

编辑:我应该补充一点,我对Makefiles的经验很少,而我上一次用C编写的是8年前的大学时代。所以,如果有一些我没注意到的事情,我会道歉。

1 个答案:

答案 0 :(得分:0)

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

  1. 使用GCC 3.4.5,我输入./configure&&amp ;;开始制作过程。使
  2. 制作过程在到达'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,以便继续构建剩下的东西。