devkitPro / pacman-packages

https://devkitpro.org
131 stars 104 forks source link

Question about libarchive #328

Closed PoloNX closed 9 months ago

PoloNX commented 9 months ago

HI @WinterMute Thanks for the help about libarchive I'm new with pacman packages I use xrepo normally. When i try to build with 3.7.2 I have the following error about the link :

linking SimpleModDownloader.elf
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libarchive.a(archive_read_support_filter_program.o): in function `child_stop':
archive_read_support_filter_program.c:(.text.child_stop+0xac): undefined reference to `waitpid'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libarchive.a(archive_read_support_filter_program.o): in function `program_filter_read':
archive_read_support_filter_program.c:(.text.program_filter_read+0x16c): undefined reference to `__archive_check_child'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libarchive.a(archive_read_support_filter_program.o): in function `__archive_read_program':
archive_read_support_filter_program.c:(.text.__archive_read_program+0xb0): undefined reference to `__archive_create_child'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libarchive.a(archive_read_support_filter_zstd.o): in function `zstd_filter_close':
archive_read_support_filter_zstd.c:(.text.zstd_filter_close+0x14): undefined reference to `ZSTD_freeDStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libarchive.a(archive_read_support_filter_zstd.o): in function `zstd_bidder_init':
archive_read_support_filter_zstd.c:(.text.zstd_bidder_init+0x18): undefined reference to `ZSTD_DStreamOutSize'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_filter_zstd.c:(.text.zstd_bidder_init+0x50): undefined reference to `ZSTD_createDStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_filter_zstd.c:(.text.zstd_bidder_init+0xac): undefined reference to `ZSTD_freeDStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libarchive.a(archive_read_support_filter_zstd.o): in function `zstd_filter_read':
archive_read_support_filter_zstd.c:(.text.zstd_filter_read+0x50): undefined reference to `ZSTD_initDStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_filter_zstd.c:(.text.zstd_filter_read+0x58): undefined reference to `ZSTD_isError'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_filter_zstd.c:(.text.zstd_filter_read+0x94): undefined reference to `ZSTD_decompressStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_filter_zstd.c:(.text.zstd_filter_read+0x9c): undefined reference to `ZSTD_isError'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_filter_zstd.c:(.text.zstd_filter_read+0x140): undefined reference to `ZSTD_getErrorName'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_filter_zstd.c:(.text.zstd_filter_read+0x174): undefined reference to `ZSTD_getErrorName'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libarchive.a(archive_read_support_format_zip.o): in function `archive_read_format_zip_cleanup':      
archive_read_support_format_zip.c:(.text.archive_read_format_zip_cleanup+0x150): undefined reference to `ZSTD_freeDStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libarchive.a(archive_read_support_format_zip.o): in function `archive_read_format_zip_read_data':    
archive_read_support_format_zip.c:(.text.archive_read_format_zip_read_data+0x2a4): undefined reference to `ZSTD_createDStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_format_zip.c:(.text.archive_read_format_zip_read_data+0x2ac): undefined reference to `ZSTD_initDStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_format_zip.c:(.text.archive_read_format_zip_read_data+0x2b4): undefined reference to `ZSTD_isError'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_format_zip.c:(.text.archive_read_format_zip_read_data+0x2cc): undefined reference to `ZSTD_DStreamOutSize'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_format_zip.c:(.text.archive_read_format_zip_read_data+0x330): undefined reference to `ZSTD_decompressStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_format_zip.c:(.text.archive_read_format_zip_read_data+0x338): undefined reference to `ZSTD_isError'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_format_zip.c:(.text.archive_read_format_zip_read_data+0xc40): undefined reference to `ZSTD_freeDStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_format_zip.c:(.text.archive_read_format_zip_read_data+0xc74): undefined reference to `ZSTD_freeDStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_format_zip.c:(.text.archive_read_format_zip_read_data+0xd44): undefined reference to `ZSTD_getErrorName'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_format_zip.c:(.text.archive_read_format_zip_read_data+0xdac): undefined reference to `ZSTD_getErrorName'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libarchive.a(archive_read_support_format_7zip.o): in function `init_decompression':
archive_read_support_format_7zip.c:(.text.init_decompression+0x1f8): undefined reference to `ZSTD_createDStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_format_7zip.c:(.text.init_decompression+0x5b0): undefined reference to `ZSTD_freeDStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libarchive.a(archive_read_support_format_7zip.o): in function `extract_pack_stream':
archive_read_support_format_7zip.c:(.text.extract_pack_stream+0x34c): undefined reference to `ZSTD_decompressStream'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_format_7zip.c:(.text.extract_pack_stream+0x354): undefined reference to `ZSTD_isError'
C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: archive_read_support_format_7zip.c:(.text.extract_pack_stream+0xce0): undefined reference to `ZSTD_getErrorName'
collect2.exe: error: ld returned 1 exit status

Maybe you have to add the switch-libzstd in depends() ?

WinterMute commented 9 months ago

Adding libzstd to depends won't make any difference, you still need to link the library. The easiest way to deal with this is to use pkg-config to find the libs that need linking like this

LIBS :=     -lstdc++fs `$(PREFIX)pkg-config --libs libarchive libcurl`

You'll also need to update packages again using pacman -Syu to pick up the libarchive package that I fixed again.

PoloNX commented 9 months ago

Thanks!