You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Not a C/C++ dev (Go, Python, and Bash these days), but I've compiled lots of software from source over the years. I generally know my stuff, but I'm a bit shaky here.
Specs
macOS 14.3 with Xcode 15.2 installed. Apple M1-class chip (arm64).
gcc points to Clang, so I installed real GCC from Homebrew.
$ ll $(which gcc-13)
Permissions Links Size User Group Date Modified Git Name
lrwxr-xr-x 1 - rparman admin 2024-01-18 16:12 -I /opt/homebrew/bin/gcc-13 -> ../Cellar/gcc/13.2.0/bin/gcc-13*
make is the GNU make.
$ ll $(which gmake)
Permissions Links Size User Group Date Modified Git Name
lrwxr-xr-x 1 - rparman admin 2023-02-28 08:16 -I /opt/homebrew/bin/gmake -> ../Cellar/make/4.4.1/bin/gmake*
$ gmake
gmake -C mbedtls lib
gmake[1]: Entering directory '/Library/WebServer/Documents/switch/hactool/mbedtls'
gmake[2]: Entering directory '/Library/WebServer/Documents/switch/hactool/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
cmac.c:428:46: warning: argument 5 of type 'unsigned char *' declared as a pointer [-Warray-parameter=]
428 | unsigned char *output )
| ~~~~~~~~~~~~~~~^~~~~~
In file included from cmac.c:51:
../include/mbedtls/cmac.h:154:45: note: previously declared as an array 'unsigned char[16]'
154 | unsigned char output[16] );
| ~~~~~~~~~~~~~~^~~~~~~~~~
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 gf128mul.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
ssl_tls.c:1012:67: warning: argument 2 of type 'unsigned char[36]' with mismatched bound [-Warray-parameter=]
1012 | void ssl_calc_verify_tls( mbedtls_ssl_context *ssl, unsigned char hash[36] )
| ~~~~~~~~~~~~~~^~~~~~~~
ssl_tls.c:466:57: note: previously declared as 'unsigned char *'
466 | static void ssl_calc_verify_tls( mbedtls_ssl_context *, unsigned char * );
| ^~~~~~~~~~~~~~~
ssl_tls.c:1040:74: warning: argument 2 of type 'unsigned char[32]' with mismatched bound [-Warray-parameter=]
1040 | void ssl_calc_verify_tls_sha256( mbedtls_ssl_context *ssl, unsigned char hash[32] )
| ~~~~~~~~~~~~~~^~~~~~~~
ssl_tls.c:473:63: note: previously declared as 'unsigned char *'
473 | static void ssl_calc_verify_tls_sha256( mbedtls_ssl_context *,unsigned char * );
| ^~~~~~~~~~~~~~~
ssl_tls.c:1061:74: warning: argument 2 of type 'unsigned char[48]' with mismatched bound [-Warray-parameter=]
1061 | void ssl_calc_verify_tls_sha384( mbedtls_ssl_context *ssl, unsigned char hash[48] )
| ~~~~~~~~~~~~~~^~~~~~~~
ssl_tls.c:479:64: note: previously declared as 'unsigned char *'
479 | static void ssl_calc_verify_tls_sha384( mbedtls_ssl_context *, unsigned char * );
| ^~~~~~~~~~~~~~~
ssl_tls.c: In function 'ssl_calc_finished_tls_sha384':
ssl_tls.c:5126:5: warning: 'mbedtls_sha512_finish' accessing 64 bytes in a region of size 48 [-Wstringop-overflow=]
5126 | mbedtls_sha512_finish( &sha512, padbuf );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ssl_tls.c:5126:5: note: referencing argument 2 of type 'unsigned char[64]'
In file included from ../include/mbedtls/ssl_internal.h:41,
from ssl_tls.c:48:
../include/mbedtls/sha512.h:102:6: note: in a call to function 'mbedtls_sha512_finish'
102 | void mbedtls_sha512_finish( mbedtls_sha512_context *ctx, unsigned char output[64] );
| ^~~~~~~~~~~~~~~~~~~~~
ssl_tls.c: In function 'ssl_calc_verify_tls_sha384':
ssl_tls.c:1070:5: warning: 'mbedtls_sha512_finish' accessing 64 bytes in a region of size 48 [-Wstringop-overflow=]
1070 | mbedtls_sha512_finish( &sha512, hash );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ssl_tls.c:1070:5: note: referencing argument 2 of type 'unsigned char[64]'
../include/mbedtls/sha512.h:102:6: note: in a call to function 'mbedtls_sha512_finish'
102 | void mbedtls_sha512_finish( mbedtls_sha512_context *ctx, unsigned char output[64] );
| ^~~~~~~~~~~~~~~~~~~~~
AR libmbedtls.a
RL libmbedtls.a
gmake[2]: Leaving directory '/Library/WebServer/Documents/switch/hactool/mbedtls/library'
gmake[1]: Leaving directory '/Library/WebServer/Documents/switch/hactool/mbedtls'
gmake hactool
gmake[1]: Entering directory '/Library/WebServer/Documents/switch/hactool'
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o save.o save.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o sha.o sha.c
sha.c: In function 'new_sha_ctx':
sha.c:17:66: warning: implicit conversion from 'hash_type_t' to 'mbedtls_md_type_t' [-Wenum-conversion]
17 | if (mbedtls_md_setup(&ctx->digest, mbedtls_md_info_from_type(type), hmac)) {
| ^~~~
sha.c: In function 'sha256_get_buffer_hmac':
sha.c:67:66: warning: implicit conversion from 'enum <anonymous>' to 'mbedtls_md_type_t' [-Wenum-conversion]
67 | if (mbedtls_md_setup(&ctx->digest, mbedtls_md_info_from_type(HASH_TYPE_SHA256), 1)) {
| ^~~~~~~~~~~~~~~~
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o aes.o aes.c
aes.c: In function 'new_aes_ctx':
aes.c:19:78: warning: implicit conversion from 'aes_mode_t' to 'mbedtls_cipher_type_t' [-Wenum-conversion]
19 | if (mbedtls_cipher_setup(&ctx->cipher_dec, mbedtls_cipher_info_from_type(mode))
| ^~~~
aes.c:20:81: warning: implicit conversion from 'aes_mode_t' to 'mbedtls_cipher_type_t' [-Wenum-conversion]
20 | || mbedtls_cipher_setup(&ctx->cipher_enc, mbedtls_cipher_info_from_type(mode))) {
| ^~~~
aes.c:24:68: warning: implicit conversion from 'enum <anonymous>' to 'mbedtls_operation_t' [-Wenum-conversion]
24 | if (mbedtls_cipher_setkey(&ctx->cipher_dec, key, key_size * 8, AES_DECRYPT)
| ^~~~~~~~~~~
aes.c:25:71: warning: implicit conversion from 'enum <anonymous>' to 'mbedtls_operation_t' [-Wenum-conversion]
25 | || mbedtls_cipher_setkey(&ctx->cipher_enc, key, key_size * 8, AES_ENCRYPT)) {
| ^~~~~~~~~~~
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o extkeys.o extkeys.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o rsa.o rsa.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o npdm.o npdm.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o bktr.o bktr.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o kip.o kip.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o packages.o packages.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o pki.o pki.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o pfs0.o pfs0.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o hfs0.o hfs0.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o nca0_romfs.o nca0_romfs.c
nca0_romfs.c: In function 'nca0_romfs_print':
nca0_romfs.c:141:41: warning: unused parameter 'ctx' [-Wunused-parameter]
141 | void nca0_romfs_print(nca0_romfs_ctx_t *ctx) {
| ~~~~~~~~~~~~~~~~~~^~~
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o romfs.o romfs.c
romfs.c: In function 'romfs_print':
romfs.c:140:31: warning: unused parameter 'ctx' [-Wunused-parameter]
140 | void romfs_print(romfs_ctx_t *ctx) {
| ~~~~~~~~~~~~~^~~
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o utils.o utils.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o nax0.o nax0.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o nso.o nso.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o lz4.o lz4.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o nca.o nca.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o xci.o xci.c
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o main.o main.c
main.c: In function 'usage':
main.c:112:9: warning: string length '5108' is greater than the length '4095' ISO C99 compilers are required to support [-Woverlength-strings]
112 | "\n", __TIME__, __DATE__, prog_name);
| ^~~~
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o filepath.o filepath.c
filepath.c: In function 'filepath_set':
filepath.c:109:9: warning: '__builtin_strncpy' specified bound 1023 equals destination size [-Wstringop-truncation]
109 | strncpy(fpath->char_path, path, MAX_PATH);
| ^~~~~~~
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o ConvertUTF.o ConvertUTF.c
ConvertUTF.c: In function 'ConvertUTF16toUTF8':
ConvertUTF.c:270:72: warning: this statement may fall through [-Wimplicit-fallthrough=]
270 | case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
| ~~~^~~~~
ConvertUTF.c:271:13: note: here
271 | case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
| ^~~~
ConvertUTF.c:271:72: warning: this statement may fall through [-Wimplicit-fallthrough=]
271 | case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
| ~~~^~~~~
ConvertUTF.c:272:13: note: here
272 | case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
| ^~~~
ConvertUTF.c:272:72: warning: this statement may fall through [-Wimplicit-fallthrough=]
272 | case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
| ~~~^~~~~
ConvertUTF.c:273:13: note: here
273 | case 1: *--target = (UTF8)(ch | firstByteMark[bytesToWrite]);
| ^~~~
ConvertUTF.c: In function 'isLegalUTF8':
ConvertUTF.c:301:42: warning: this statement may fall through [-Wimplicit-fallthrough=]
301 | case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false;
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
ConvertUTF.c:302:5: note: here
302 | case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false;
| ^~~~
ConvertUTF.c:302:42: warning: this statement may fall through [-Wimplicit-fallthrough=]
302 | case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false;
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
ConvertUTF.c:303:5: note: here
303 | case 2: if ((a = (*--srcptr)) > 0xBF) return false;
| ^~~~
ConvertUTF.c:305:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
305 | switch (*source) {
| ^~~~~~
ConvertUTF.c:314:5: note: here
314 | case 1: if (*source >= 0x80 && *source < 0xC2) return false;
| ^~~~
ConvertUTF.c: In function 'ConvertUTF8toUTF16':
ConvertUTF.c:357:41: warning: this statement may fall through [-Wimplicit-fallthrough=]
357 | case 5: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
| ~~~^~~~~
ConvertUTF.c:358:13: note: here
358 | case 4: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
| ^~~~
ConvertUTF.c:358:41: warning: this statement may fall through [-Wimplicit-fallthrough=]
358 | case 4: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
| ~~~^~~~~
ConvertUTF.c:359:13: note: here
359 | case 3: ch += *source++; ch <<= 6;
| ^~~~
ConvertUTF.c:359:41: warning: this statement may fall through [-Wimplicit-fallthrough=]
359 | case 3: ch += *source++; ch <<= 6;
| ~~~^~~~~
ConvertUTF.c:360:13: note: here
360 | case 2: ch += *source++; ch <<= 6;
| ^~~~
ConvertUTF.c:360:41: warning: this statement may fall through [-Wimplicit-fallthrough=]
360 | case 2: ch += *source++; ch <<= 6;
| ~~~^~~~~
ConvertUTF.c:361:13: note: here
361 | case 1: ch += *source++; ch <<= 6;
| ^~~~
ConvertUTF.c:361:41: warning: this statement may fall through [-Wimplicit-fallthrough=]
361 | case 1: ch += *source++; ch <<= 6;
| ~~~^~~~~
ConvertUTF.c:362:13: note: here
362 | case 0: ch += *source++;
| ^~~~
ConvertUTF.c: In function 'ConvertUTF32toUTF8':
ConvertUTF.c:448:72: warning: this statement may fall through [-Wimplicit-fallthrough=]
448 | case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
| ~~~^~~~~
ConvertUTF.c:449:13: note: here
449 | case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
| ^~~~
ConvertUTF.c:449:72: warning: this statement may fall through [-Wimplicit-fallthrough=]
449 | case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
| ~~~^~~~~
ConvertUTF.c:450:13: note: here
450 | case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
| ^~~~
ConvertUTF.c:450:72: warning: this statement may fall through [-Wimplicit-fallthrough=]
450 | case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
| ~~~^~~~~
ConvertUTF.c:451:13: note: here
451 | case 1: *--target = (UTF8) (ch | firstByteMark[bytesToWrite]);
| ^~~~
ConvertUTF.c: In function 'ConvertUTF8toUTF32':
ConvertUTF.c:483:41: warning: this statement may fall through [-Wimplicit-fallthrough=]
483 | case 5: ch += *source++; ch <<= 6;
| ~~~^~~~~
ConvertUTF.c:484:13: note: here
484 | case 4: ch += *source++; ch <<= 6;
| ^~~~
ConvertUTF.c:484:41: warning: this statement may fall through [-Wimplicit-fallthrough=]
484 | case 4: ch += *source++; ch <<= 6;
| ~~~^~~~~
ConvertUTF.c:485:13: note: here
485 | case 3: ch += *source++; ch <<= 6;
| ^~~~
ConvertUTF.c:485:41: warning: this statement may fall through [-Wimplicit-fallthrough=]
485 | case 3: ch += *source++; ch <<= 6;
| ~~~^~~~~
ConvertUTF.c:486:13: note: here
486 | case 2: ch += *source++; ch <<= 6;
| ^~~~
ConvertUTF.c:486:41: warning: this statement may fall through [-Wimplicit-fallthrough=]
486 | case 2: ch += *source++; ch <<= 6;
| ~~~^~~~~
ConvertUTF.c:487:13: note: here
487 | case 1: ch += *source++; ch <<= 6;
| ^~~~
ConvertUTF.c:487:41: warning: this statement may fall through [-Wimplicit-fallthrough=]
487 | case 1: ch += *source++; ch <<= 6;
| ~~~^~~~~
ConvertUTF.c:488:13: note: here
488 | case 0: ch += *source++;
| ^~~~
gcc-13 -I ./mbedtls/include -c -O2 -Wall -Wextra -pedantic -std=gnu11 -fPIC -D_BSD_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D__USE_MINGW_ANSI_STDIO=1 -D_FILE_OFFSET_BITS=64 -o cJSON.o cJSON.c
gcc-13 -o hactool save.o sha.o aes.o extkeys.o rsa.o npdm.o bktr.o kip.o packages.o pki.o pfs0.o hfs0.o nca0_romfs.o romfs.o utils.o nax0.o nso.o lz4.o nca.o xci.o main.o filepath.o ConvertUTF.o cJSON.o -L ./mbedtls/library -lmbedtls -lmbedx509 -lmbedcrypto
ld: multiple errors: archive member '/' not a mach-o file in '/Library/WebServer/Documents/switch/hactool/mbedtls/library/libmbedtls.a'; archive member '/' not a mach-o file in '/Library/WebServer/Documents/switch/hactool/mbedtls/library/libmbedx509.a'; archive member '/' not a mach-o file in '/Library/WebServer/Documents/switch/hactool/mbedtls/library/libmbedcrypto.a'
collect2: error: ld returned 1 exit status
gmake[1]: *** [Makefile:17: hactool] Error 1
gmake[1]: Leaving directory '/Library/WebServer/Documents/switch/hactool'
gmake: *** [Makefile:11: all] Error 2
I seem to be getting an error on the linking step.
ld: multiple errors: archive member '/' not a mach-o file in '/Library/WebServer/Documents/switch/hactool/mbedtls/library/libmbedtls.a'; archive member '/' not a mach-o file in '/Library/WebServer/Documents/switch/hactool/mbedtls/library/libmbedx509.a'; archive member '/' not a mach-o file in '/Library/WebServer/Documents/switch/hactool/mbedtls/library/libmbedcrypto.a'
collect2: error: ld returned 1 exit status
Not sure where to go from here. Any tips would be appreciated.
The text was updated successfully, but these errors were encountered:
Intro
Not a C/C++ dev (Go, Python, and Bash these days), but I've compiled lots of software from source over the years. I generally know my stuff, but I'm a bit shaky here.
Specs
macOS 14.3 with Xcode 15.2 installed. Apple M1-class chip (arm64).
gcc
points to Clang, so I installed real GCC from Homebrew.make
is the GNU make.Copied
config.mk.template
→config.mk
. UpdatedCC = gcc
→CC = gcc-13
. Left everything else the same. This appears to match https://github.com/SciresM/hactool/blob/master/.github/workflows/build.yml#L41-L43 (except for the change ingcc
on the$PATH
).Compile logging
I seem to be getting an error on the linking step.
Not sure where to go from here. Any tips would be appreciated.
The text was updated successfully, but these errors were encountered: