不可能编译 amiitool (MinGW)

compilation amiitool impossible (MinGW)

我希望编译amiitool:

https://github.com/socram8888/amiitool

但是我做不到,我在作者的存款上看到人们也遇到了问题: https://github.com/socram8888/amiitool/issues/9

所以我允许自己post在这里编辑。

我的配置:Windows10,MinGW(添加我的路径系统)version:GCC-6.3.0-1 6.3.0,Cmder

我的主要目标是了解如何使用我当前的配置编译 amiitool。 有关信息,当我尝试编译一个小的 hello world 时一切正常。

感谢大家的帮助。

我从头开始恢复一切:

在我的例子中,这个版本的 mingw32 有效:

https://sourceforge.net/projects/mingw-w64-dgn/?source=typ_redirect

所以我突然提议,我可以把我的post变成一个小教程来帮助像我一样的人,谁开始! 感谢 iBug 的宝贵帮助,

1) 克隆存储库 amiitool:

git clone https://github.com/socram8888/amiitool.git

--> 此时文件夹 mbedtls 是空的

2) 克隆存储库 mbedtls:

git clone "https://github.com/ARMmbed/mbedtls"

3) 更新模块:

git submodule

--> 在此阶段,文件夹 mbedtls 正常

3) 和你一样,我使用了 cmd 而不是 Cmder

set CC=gcc

4) 编辑 Makefile(根)文件

PWD ?= "`pwd`" remplace for : PWD ?= .

gitversion.h:
    echo #define GIT_COMMIT_ID 0x12345678 > $(PWD)/gitversion.h
    echo #define GIT_COMMIT_COUNT 888 >> $(PWD)/gitversion.h

5)编译:

mingw32-make PWD=%CD%

首先,请做好准备,你会运行宁陷入一系列问题,因为该程序是为Unix系统设计的,所以有很多在 Windows.

上编译之前要做的事情

我使用 MinGW (latest download from SourceForge) + Windows 命令提示符(将 MinGW 添加到 %PATH%)。首先,我在 amiitools 目录中 right-clicked 并选择 "Open Command Prompt here".

在编译之前,通过运行在工作目录

中执行以下命令确保子模块正确
git submodule update --init --recursive

然后,由于 MinGW 没有捆绑 cc.exe(与 Unix 系统相反),您应该使用 gcc.exe。要么修改Makefile,要么运行 set CC=gcc(我用Windows Command Prompt cmd.exe),或者在运行ning make时指定编译器(如下图)。

然后你需要对Makefile做一些修改。将所有带反引号的命令替换为实际字符串或随机内容,如下所示(每行前的数字是行号):

 3 PWD ?= .
52     echo #define GIT_COMMIT_ID 0x12345678 > $(PWD)/gitversion.h
53     echo #define GIT_COMMIT_COUNT 888 >> $(PWD)/gitversion.h
  • 第 3 行的修改似乎没有必要,见下文。

请注意,在第 52 行和第 53 行,您需要删除双引号,因为 CMD 中的 echo 与 Unix 中的 echo 不同。

大功告成。现在 运行 make 编译所有内容。你不应该再运行惹麻烦了:

mingw32-make CC=gcc PWD=%CD%

祝你好运。


根据要求,这是我的完整日志,包括我使用的工具的版本信息:

D:\Desktop\amiitool>notepad Makefile

D:\Desktop\amiitool>gcc --version
gcc (MinGW.org GCC-6.3.0-1) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


D:\Desktop\amiitool>mingw32-make --version
GNU Make 3.82.90
Built for i686-pc-mingw32
Copyright (C) 1988-2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

D:\Desktop\amiitool>mingw32-make CC=gcc PWD=%CD%
echo #define GIT_COMMIT_ID 0x12345678 > D:\Desktop\amiitool/gitversion.h
echo #define GIT_COMMIT_COUNT 666 >> D:\Desktop\amiitool/gitversion.h
"mingw32-make" lib -C D:\Desktop\amiitool/mbedtls CFLAGS="-DMBEDTLS_CONFIG_FILE='\"D:\Desktop\amiitool/configs/mbedtls.h\"' -Wall -pedantic -O2 -fsigned-char"
mingw32-make[1]: Entering directory 'D:/Desktop/amiitool/mbedtls'
mingw32-make[2]: Entering directory 'D:/Desktop/amiitool/mbedtls/library'
"  CC    aes.c"
"  CC    aesni.c"
"  CC    arc4.c"
"  CC    asn1parse.c"
"  CC    asn1write.c"
"  CC    base64.c"
"  CC    bignum.c"
"  CC    blowfish.c"
"  CC    camellia.c"
"  CC    ccm.c"
"  CC    cipher.c"
"  CC    cipher_wrap.c"
"  CC    cmac.c"
"  CC    ctr_drbg.c"
"  CC    des.c"
"  CC    dhm.c"
"  CC    ecdh.c"
"  CC    ecdsa.c"
"  CC    ecjpake.c"
"  CC    ecp.c"
"  CC    ecp_curves.c"
"  CC    entropy.c"
"  CC    entropy_poll.c"
"  CC    error.c"
"  CC    gcm.c"
"  CC    havege.c"
"  CC    hmac_drbg.c"
"  CC    md.c"
"  CC    md2.c"
"  CC    md4.c"
"  CC    md5.c"
"  CC    md_wrap.c"
"  CC    memory_buffer_alloc.c"
"  CC    oid.c"
"  CC    padlock.c"
"  CC    pem.c"
"  CC    pk.c"
"  CC    pk_wrap.c"
"  CC    pkcs12.c"
"  CC    pkcs5.c"
"  CC    pkparse.c"
"  CC    pkwrite.c"
"  CC    platform.c"
"  CC    ripemd160.c"
"  CC    rsa.c"
"  CC    sha1.c"
"  CC    sha256.c"
"  CC    sha512.c"
"  CC    threading.c"
"  CC    timing.c"
"  CC    version.c"
"  CC    version_features.c"
"  CC    xtea.c"
"  AR    libmbedcrypto.a"
"  RL    libmbedcrypto.a"
"  CC    certs.c"
"  CC    pkcs11.c"
"  CC    x509.c"
"  CC    x509_create.c"
"  CC    x509_crl.c"
"  CC    x509_crt.c"
"  CC    x509_csr.c"
"  CC    x509write_crt.c"
"  CC    x509write_csr.c"
"  AR    libmbedx509.a"
"  RL    libmbedx509.a"
"  CC    debug.c"
"  CC    net_sockets.c"
"  CC    ssl_cache.c"
"  CC    ssl_ciphersuites.c"
"  CC    ssl_cli.c"
"  CC    ssl_cookie.c"
"  CC    ssl_srv.c"
"  CC    ssl_ticket.c"
"  CC    ssl_tls.c"
"  AR    libmbedtls.a"
"  RL    libmbedtls.a"
mingw32-make[2]: Leaving directory 'D:/Desktop/amiitool/mbedtls/library'
mingw32-make[1]: Leaving directory 'D:/Desktop/amiitool/mbedtls'
gcc -I D:\Desktop\amiitool/include -I D:\Desktop\amiitool/mbedtls/include -Wall -pedantic -O2 -fsigned-char -c amiitool.c -o amiitool.o
gcc -I D:\Desktop\amiitool/include -I D:\Desktop\amiitool/mbedtls/include -Wall -pedantic -O2 -fsigned-char -c keygen.c -o keygen.o
gcc -I D:\Desktop\amiitool/include -I D:\Desktop\amiitool/mbedtls/include -Wall -pedantic -O2 -fsigned-char -c drbg.c -o drbg.o
gcc -I D:\Desktop\amiitool/include -I D:\Desktop\amiitool/mbedtls/include -Wall -pedantic -O2 -fsigned-char -c util.c -o util.o
gcc -I D:\Desktop\amiitool/include -I D:\Desktop\amiitool/mbedtls/include -Wall -pedantic -O2 -fsigned-char -c version.c -o version.o
gcc -I D:\Desktop\amiitool/include -I D:\Desktop\amiitool/mbedtls/include -Wall -pedantic -O2 -fsigned-char -c amiibo.c -o amiibo.o
gcc -I D:\Desktop\amiitool/include -I D:\Desktop\amiitool/mbedtls/include -Wall -pedantic -O2 -fsigned-char keygen.o drbg.o util.o version.o amiibo.o amiitool.o -o amiitool -L D:\Desktop\amiitool/mbedtls/library -l mbedcrypto

D:\Desktop\amiitool>

Windows 使用 MSYS2 的快速简单构建说明:

  • https://www.msys2.org/
  • 安装 MSYS2
  • 更新 MSYS2
    • pacman -Syu
    • 重启
    • pacman -Su
  • 安装所需的软件包:
    • pacman -S base-devel gcc git
  • 克隆 amiitool 存储库:
    • git clone https://github.com/socram8888/amiitool.git --recursive
  • 构建 amiitool:
    • cd amiitool
    • make