Создание libtiff с использованием правила bazel Foreign_ccC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Создание libtiff с использованием правила bazel Foreign_cc

Сообщение Anonymous »

На Mac M3 с использованием MacOS 26.1 и доморощенного базеля 8.4.2 я создаю libtiff, где у меня есть libjpeg_turbo в качестве зависимости. При сборке я получаю ошибку связывания с jsimd:

Код: Выделить всё

[ 73%] Linking CXX executable tiffcrop
Undefined symbols for architecture arm64:
"_jsimd_can_convsamp", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_can_convsamp_float", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_can_encode_mcu_AC_first_prepare", referenced from:
_start_pass_phuff in libjpeg.a[13](jcphuff.o)
"_jsimd_can_encode_mcu_AC_refine_prepare", referenced from:
_start_pass_phuff in libjpeg.a[13](jcphuff.o)
"_jsimd_can_fdct_float", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_can_fdct_ifast", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_can_fdct_islow", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_can_h1v2_fancy_upsample", referenced from:
_jinit_upsampler in libjpeg.a[83](jdsample-8.o)
"_jsimd_can_h2v1_downsample", referenced from:
_jinit_downsampler in libjpeg.a[56](jcsample-8.o)
"_jsimd_can_h2v1_fancy_upsample", referenced from:
_jinit_upsampler in libjpeg.a[83](jdsample-8.o)
"_jsimd_can_h2v1_merged_upsample", referenced from:
_jinit_merged_upsampler in libjpeg.a[77](jdmerge-8.o)
"_jsimd_can_h2v1_upsample", referenced from:
_jinit_upsampler in libjpeg.a[83](jdsample-8.o)
"_jsimd_can_h2v2_downsample", referenced from:
_jinit_downsampler in libjpeg.a[56](jcsample-8.o)
"_jsimd_can_h2v2_fancy_upsample", referenced from:
_jinit_upsampler in libjpeg.a[83](jdsample-8.o)
"_jsimd_can_h2v2_merged_upsample", referenced from:
_jinit_merged_upsampler in libjpeg.a[77](jdmerge-8.o)
"_jsimd_can_h2v2_upsample", referenced from:
_jinit_upsampler in libjpeg.a[83](jdsample-8.o)
"_jsimd_can_huff_encode_one_block", referenced from:
_start_pass_huff in libjpeg.a[5](jchuff.o)
"_jsimd_can_idct_2x2", referenced from:
_start_pass in libjpeg.a[66](jddctmgr-8.o)
"_jsimd_can_idct_4x4", referenced from:
_start_pass in libjpeg.a[66](jddctmgr-8.o)
"_jsimd_can_idct_float", referenced from:
_start_pass in libjpeg.a[66](jddctmgr-8.o)
"_jsimd_can_idct_ifast", referenced from:
_start_pass in libjpeg.a[66](jddctmgr-8.o)
"_jsimd_can_idct_islow", referenced from:
_start_pass in libjpeg.a[66](jddctmgr-8.o)
"_jsimd_can_quantize", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_can_quantize_float", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_can_rgb_gray", referenced from:
_jinit_color_converter in libjpeg.a[39](jccolor-8.o)
"_jsimd_can_rgb_ycc", referenced from:
_jinit_color_converter in libjpeg.a[39](jccolor-8.o)
"_jsimd_can_ycc_rgb", referenced from:
_jinit_color_deconverter in libjpeg.a[64](jdcolor-8.o)
"_jsimd_can_ycc_rgb565", referenced from:
_jinit_color_deconverter in libjpeg.a[64](jdcolor-8.o)
"_jsimd_convsamp", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_convsamp_float", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_encode_mcu_AC_first_prepare", referenced from:
_start_pass_phuff in libjpeg.a[13](jcphuff.o)
"_jsimd_encode_mcu_AC_refine_prepare", referenced from:
_start_pass_phuff in libjpeg.a[13](jcphuff.o)
"_jsimd_fdct_float", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_fdct_ifast", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_fdct_islow", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_h1v2_fancy_upsample", referenced from:
_jinit_upsampler in libjpeg.a[83](jdsample-8.o)
"_jsimd_h2v1_downsample", referenced from:
_jinit_downsampler in libjpeg.a[56](jcsample-8.o)
"_jsimd_h2v1_fancy_upsample", referenced from:
_jinit_upsampler in libjpeg.a[83](jdsample-8.o)
"_jsimd_h2v1_merged_upsample", referenced from:
_jinit_merged_upsampler in libjpeg.a[77](jdmerge-8.o)
"_jsimd_h2v1_upsample",  referenced from:
_jinit_upsampler in libjpeg.a[83](jdsample-8.o)
"_jsimd_h2v2_downsample", referenced from:
_jinit_downsampler in libjpeg.a[56](jcsample-8.o)
"_jsimd_h2v2_fancy_upsample", referenced from:
_jinit_upsampler in libjpeg.a[83](jdsample-8.o)
"_jsimd_h2v2_merged_upsample", referenced from:
_jinit_merged_upsampler in libjpeg.a[77](jdmerge-8.o)
"_jsimd_h2v2_upsample", referenced from:
_jinit_upsampler in libjpeg.a[83](jdsample-8.o)
"_jsimd_huff_encode_one_block", referenced from:
_encode_mcu_huff in libjpeg.a[5](jchuff.o)
_encode_mcu_huff in libjpeg.a[5](jchuff.o)
"_jsimd_idct_2x2", referenced from:
_start_pass in libjpeg.a[66](jddctmgr-8.o)
"_jsimd_idct_4x4", referenced from:
_start_pass in libjpeg.a[66](jddctmgr-8.o)
"_jsimd_idct_float", referenced from:
_start_pass in libjpeg.a[66](jddctmgr-8.o)
"_jsimd_idct_ifast", referenced from:
_start_pass in libjpeg.a[66](jddctmgr-8.o)
"_jsimd_idct_islow", referenced from:
_start_pass in libjpeg.a[66](jddctmgr-8.o)
"_jsimd_quantize", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
_start_pass_fdctmgr in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_quantize_float", referenced from:
_jinit_forward_dct in libjpeg.a[41](jcdctmgr-8.o)
"_jsimd_rgb_gray_convert", referenced from:
_jinit_color_converter in libjpeg.a[39](jccolor-8.o)
"_jsimd_rgb_ycc_convert", referenced from:
_jinit_color_converter in libjpeg.a[39](jccolor-8.o)
"_jsimd_ycc_rgb565_convert", referenced from:
_jinit_color_deconverter in libjpeg.a[64](jdcolor-8.o)
"_jsimd_ycc_rgb_convert", referenced from:
_jinit_color_deconverter in libjpeg.a[64](jdcolor-8.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Error in child process '/usr/bin/xcrun'. 1
make[2]: *** [tools/CMakeFiles/tiffcrop.dir/build.make:108: tools/tiffcrop] Error 1
make[1]: *** [CMakeFiles/Makefile2:958: tools/CMakeFiles/tiffcrop.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
Вот цель, которую я строю:

Код: Выделить всё

cmake(
name = "libtiff",
cache_entries = {
"BUILD_SHARED_LIBS": "OFF",
"JPEG": "OFF",
"LZMA2": "OFF",
"LZW": "OFF",
},
# Prefer passing CMake options explicitly so the project respects them.
env = {
"BUILD_SHARED_LIBS": "OFF",
# disable optional codecs and tools/tests that pull in libjpeg/jsimd and lzma
"JPEG": "OFF",
"JPEG12": "OFF",
"LZMA": "OFF",
"BUILD_TOOLS": "OFF",
"BUILD_TESTS": "OFF",
"CMAKE_BUILD_PARALLEL_LEVEL": "32",
},
lib_source = "@libtiff_src//:all_srcs",
out_include_dir = "include",
out_static_libs = [
"libtiff.a",
"libtiffxx.a",
],
visibility = ["//visibility:public"],
deps = [
"@libjpeg_turbo",
"@simde",
"@zstd",
# "@zlib",
],
)
Как видите, я также пытался отключить поддержку jpeg, но безуспешно. Поэтому я решил продолжить путь, чтобы запустить его с функциями jpeg.
Код находится здесь: https://github.com/dreisicht/libtiff_bazel
Чтобы собрать его, просто вызовите bazel build :libtiff
Любая подсказка будет очень приветствоваться!

Подробнее здесь: https://stackoverflow.com/questions/798 ... gn-cc-rule
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»