ITADN

Build fails with MZ_PPMD enabled: relocation R_X86_64_PC32 cannot be used against symbol '...'; recompile with -fPIC

#979OpenVVD 创建于 2026-04-24
V
VVDcommented
```shell FAILED: [code=1] libminizip-ng.so.4.1.1 : && /usr/bin/cc -fPIC -O2 -pipe -march=core2 -DLIBICONV_PLUG -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=core2 -DLIBICONV_PLUG -fstack-protector-strong -fno-strict-aliasing -DNDEBUG -Xlinker --dependency-file=CMakeFiles/minizip-ng.dir/link.d -shared -Wl,-soname,libminizip-ng.so.1 -o libminizip-ng.so.4.1.1 CMakeFiles/minizip-ng.dir/mz_crypt.c.o CMakeFiles/minizip-ng.dir/mz_os.c.o CMakeFiles/minizip-ng.dir/mz_strm.c.o CMakeFiles/minizip-ng.dir/mz_strm_buf.c.o CMakeFiles/minizip-ng.dir/mz_strm_mem.c.o CMakeFiles/minizip-ng.dir/mz_strm_split.c.o CMakeFiles/minizip-ng.dir/mz_zip.c.o CMakeFiles/minizip-ng.dir/mz_zip_rw.c.o CMakeFiles/minizip-ng.dir/mz_strm_zlib.c.o CMakeFiles/minizip-ng.dir/mz_strm_bzip.c.o CMakeFiles/minizip-ng.dir/mz_strm_lzma.c.o CMakeFiles/minizip-ng.dir/mz_strm_ppmd.c.o CMakeFiles/minizip-ng.dir/mz_strm_zstd.c.o CMakeFiles/minizip-ng.dir/mz_crypt_openssl.c.o CMakeFiles/minizip-ng.dir/mz_os_posix.c.o CMakeFiles/minizip-ng.dir/mz_strm_os_posix.c.o CMakeFiles/minizip-ng.dir/mz_strm_pkcrypt.c.o CMakeFiles/minizip-ng.dir/mz_strm_wzaes.c.o CMakeFiles/minizip-ng.dir/compat/ioapi.c.o CMakeFiles/minizip-ng.dir/compat/unzip.c.o CMakeFiles/minizip-ng.dir/compat/zip.c.o -L/usr/local/lib -Wl,-rpath,/usr/local/lib: /usr/local/lib/libz-ng.so /usr/lib/libbz2.so -llzma -lzstd -lssl -lcrypto libppmd.a && : ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8.c >>> Ppmd8.c.o:(Ppmd8_UpdateModel) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8Dec.c >>> Ppmd8Dec.c.o:(Ppmd8_DecodeSymbol) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8Enc.c >>> Ppmd8Enc.c.o:(Ppmd8_EncodeSymbol) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8.c >>> Ppmd8.c.o:(Ppmd8_UpdateModel) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8Dec.c >>> Ppmd8Dec.c.o:(Ppmd8_DecodeSymbol) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8Enc.c >>> Ppmd8Enc.c.o:(Ppmd8_EncodeSymbol) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8.c >>> Ppmd8.c.o:(Ppmd8_UpdateModel) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8Enc.c >>> Ppmd8Enc.c.o:(Ppmd8_EncodeSymbol) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8.c >>> Ppmd8.c.o:(Ppmd8_CreateSuccessors) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8Enc.c >>> Ppmd8Enc.c.o:(Ppmd8_EncodeSymbol) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8.c >>> Ppmd8.c.o:(Ppmd8_CreateSuccessors) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8.c >>> Ppmd8.c.o:(RestoreModel) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8.c >>> Ppmd8.c.o:(RestoreModel) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8.c >>> Ppmd8.c.o:(Ppmd8_Update1) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8.c >>> Ppmd8.c.o:(Ppmd8_Update1) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8.c >>> Ppmd8.c.o:(Ppmd8_Update1) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8.c >>> Ppmd8.c.o:(Ppmd8_Rescale) in archive libppmd.a ld: error: relocation R_X86_64_PC32 cannot be used against symbol '__stack_chk_guard'; recompile with -fPIC >>> defined in /lib/libc.so.7 >>> referenced by Ppmd8.c >>> Ppmd8.c.o:(Ppmd8_Rescale) in archive libppmd.a cc: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed. ``` Fix: ```diff --- CMakeLists.txt.orig 2026-04-23 04:10:20 UTC +++ CMakeLists.txt @@ -381,6 +381,7 @@ if(MZ_PPMD) ${PPMD_SOURCE_DIR}/C/Precomp.h) add_library(ppmd STATIC ${PPMD_SRC} ${PPMD_HDR}) + target_compile_options(ppmd PRIVATE -fPIC) list(APPEND MINIZIP_DEP ppmd) list(APPEND MINIZIP_INC ${PPMD_SOURCE_DIR}) ```
6 条评论