Вопрос или проблема
Я застрял с установкой и сборкой harfbuzz в Ubuntu 24.04
meson builddir :
raphy@raohy:~/Downloads$ git clone https://github.com/harfbuzz/harfbuzz.git
Клонирование в 'harfbuzz'...
удаленный: Перечисление объектов: 107603, готово.
удаленный: Подсчет объектов: 100% (16756/16756), готово.
удаленный: Сжатие объектов: 100% (852/852), готово.
удаленный: Всего 107603 (delta 16245), повторно использовано 16030 (delta 15904), pack-reused 90847 (из 1)
Получение объектов: 100% (107603/107603), 100.17 MiB | 31.79 MiB/s, готово.
Разрешение дельт: 100% (81744/81744), готово.
raphy@raohy:~/Downloads$ cd harfbuzz/
raphy@raohy:~/Downloads/harfbuzz$
raphy@raohy:~/Downloads/harfbuzz$ meson setup --includedir unicode /usr/local/include/unicode
Каталог уже сконфигурирован.
raphy@raohy:~/Downloads/harfbuzz$ meson build
Система сборки Meson
Версия: 1.3.2
Каталог исходников: /home/raphy/Downloads/harfbuzz
Каталог сборки: /home/raphy/Downloads/harfbuzz/buila
Тип сборки: локальная сборка
Имя проекта: harfbuzz
Версия проекта: 10.0.1
C компилятор для хост-машины: ccache cc (gcc 12.3.0 "cc (Ubuntu 12.3.0-17ubuntu1) 12.3.0")
C линкер для хост-машины: cc ld.bfd 2.42
C++ компилятор для хост-машины: ccache c++ (gcc 13.2.0 "c++ (Ubuntu 13.2.0-23ubuntu4) 13.2.0")
C++ линкер для хост-машины: c++ ld.bfd 2.42
Семейство процессоров хост-машины: x86_64
Процессор хост-машины: x86_64
Компилятор для C++ поддерживает аргументы линковки -Bsymbolic-functions: ДА
Компилятор для C++ поддерживает аргументы -fno-exceptions: ДА
Компилятор для C++ поддерживает аргументы -fno-rtti: ДА
Компилятор для C++ поддерживает аргументы -fno-threadsafe-statics: ДА
Компилятор для C++ поддерживает аргументы -fvisibility-inlines-hidden: ДА
Библиотека m найдена: ДА
Найдена pkg-config: ДА (/usr/bin/pkg-config) 1.8.1
Время выполнения зависимость freetype2 найдена: ДА 26.1.20
Время выполнения зависимость glib-2.0 найдена: ДА 2.80.0
Время выполнения зависимость gobject-2.0 найдена: ДА 2.80.0
Зависимость graphite2 пропущена: функция graphite2 отключена
Зависимость graphite2 пропущена: функция graphite отключена
Библиотека iwasm пропущена: функция wasm отключена
Время выполнения зависимость icu-uc найдена: ДА 74.2
Время выполнения зависимость cairo найдена: ДА 1.18.0
Время выполнения зависимость cairo-ft найдена: ДА 1.18.0
Время выполнения зависимость chafa найдена: ДА 1.14.0
Компилятор для C++ поддерживает аргументы -Wno-non-virtual-dtor: ДА
Время выполнения зависимость threads найдена: ДА
Имеет заголовок "unistd.h" : ДА
Имеет заголовок "sys/mman.h" : ДА
Имеет заголовок "stdbool.h" : ДА
Имеет заголовок "xlocale.h" : НЕТ
Проверка функции "atexit" : ДА
Проверка функции "mprotect" : ДА
Проверка функции "sysconf" : ДА
Проверка функции "getpagesize" : ДА
Проверка функции "mmap" : ДА
Проверка функции "isatty" : ДА
Проверка функции "uselocale" : ДА
Проверка функции "newlocale" : ДА
Проверка функции "sincosf" : ДА
Проверка функции "cairo_user_font_face_set_render_color_glyph_func" с зависимостью cairo: ДА
Проверка функции "cairo_font_options_get_custom_palette_color" с зависимостью cairo: ДА
Проверка функции "cairo_user_scaled_font_get_foreground_source" с зависимостью cairo: ДА
Проверка функции "FT_Get_Var_Blend_Coordinates" с зависимостью freetype2: ДА
Проверка функции "FT_Set_Var_Blend_Coordinates" с зависимостью freetype2: ДА
Проверка функции "FT_Done_MM_Var" с зависимостью freetype2: ДА
Проверка функции "FT_Get_Transform" с зависимостью freetype2: ДА
Программа gen-hb-version.py найдена: ДА (/home/raphy/Downloads/harfbuzz/src/gen-hb-version.py)
Конфигурирование hb-version.h с командой
Программа ragel найдена: НЕТ
src/meson.build:421: ПРЕДУПРЕЖДЕНИЕ: Вам нужно установить ragel, если вы собираетесь разрабатывать сам HarfBuzz
Программа gen-harfbuzzcc.py найдена: ДА (/home/raphy/Downloads/harfbuzz/src/gen-harfbuzzcc.py)
Конфигурирование hb-features.h с использованием конфигурации
Конфигурирование hb-supported-features.h с использованием конфигурации
Программа gen-def.py найдена: ДА (/home/raphy/Downloads/harfbuzz/src/gen-def.py)
Получение значения определения "_MSC_FULL_VER" : (недопустимо)
Программа gen-harfbuzzcc.py найдена: ДА (/home/raphy/Downloads/harfbuzz/src/gen-harfbuzzcc.py)
Зависимость cairo найдена: ДА 1.18.0 (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
Получение значения определения "_MSC_FULL_VER" : (недопустимо) (кешировано)
src/meson.build:824: ПРЕДУПРЕЖДЕНИЕ: Проект требует минимальной версии meson '>= 0.55.0', но использует функции, добавленные в более новых версиях:
* 1.3.0: {'fs.relative_to'}
Конфигурирование harfbuzz-config.cmake с использованием конфигурации
Зависимость glib-2.0 найдена: ДА 2.80.0 (кешировано)
Программа /usr/bin/glib-mkenums найдена: ДА (/usr/bin/glib-mkenums)
Зависимость glib-2.0 найдена: ДА 2.80.0 (кешировано)
Программа /usr/bin/glib-mkenums найдена: ДА (/usr/bin/glib-mkenums)
Программа fix_get_types.py найдена: ДА (/home/raphy/Downloads/harfbuzz/src/fix_get_types.py)
Программа fix_get_types.py найдена: ДА (/home/raphy/Downloads/harfbuzz/src/fix_get_types.py)
Программа g-ir-scanner найдена: ДА (/usr/bin/g-ir-scanner)
Время выполнения зависимость gobject-introspection-1.0 найдена: ДА 1.80.1
Зависимость gobject-introspection-1.0 найдена: ДА 1.80.1 (кешировано)
Программа /usr/bin/x86_64-linux-gnu-g-ir-scanner найдена: ДА (/usr/bin/x86_64-linux-gnu-g-ir-scanner)
Зависимость gobject-introspection-1.0 найдена: ДА 1.80.1 (кешировано)
Программа /usr/bin/x86_64-linux-gnu-g-ir-compiler найдена: ДА (/usr/bin/x86_64-linux-gnu-g-ir-compiler)
src/meson.build:1023: УСТАРЕВШИЕ ФУНКЦИИ: Проект использует функцию, которая всегда была сломана, и теперь устарела с версии '1.3.0': str.format: Значение, отличное от строк, целых чисел, булевых, опций, словарей и списков таких.
src/meson.build:1028: УСТАРЕВШИЕ ФУНКЦИИ: Проект использует функцию, которая всегда была сломана, и теперь устарела с версии '1.3.0': str.format: Значение, отличное от строк, целых чисел, булевых, опций, словарей и списков таких.
Программа check-c-linkage-decls.py найдена: ДА (/home/raphy/Downloads/harfbuzz/src/check-c-linkage-decls.py)
Программа check-externs.py найдена: ДА (/home/raphy/Downloads/harfbuzz/src/check-externs.py)
Программа check-header-guards.py найдена: ДА (/home/raphy/Downloads/harfbuzz/src/check-header-guards.py)
Программа check-includes.py найдена: ДА (/home/raphy/Downloads/harfbuzz/src/check-includes.py)
Программа check-static-inits.py найдена: ДА (/home/raphy/Downloads/harfbuzz/src/check-static-inits.py)
Программа check-symbols.py найдена: ДА (/home/raphy/Downloads/harfbuzz/src/check-symbols.py)
Программа check-libstdc++.py найдена: ДА (/home/raphy/Downloads/harfbuzz/src/check-libstdc++.py)
Программа run-tests.py найдена: ДА (/home/raphy/Downloads/harfbuzz/test/shape/run-tests.py)
Программа run-tests.py найдена: ДА (/home/raphy/Downloads/harfbuzz/test/subset/run-tests.py)
Программа run-repack-tests.py найдена: ДА (/home/raphy/Downloads/harfbuzz/test/subset/run-repack-tests.py)
Программа run-shape-fuzzer-tests.py найдена: ДА (/home/raphy/Downloads/harfbuzz/test/fuzzing/run-shape-fuzzer-tests.py)
Программа run-subset-fuzzer-tests.py найдена: ДА (/home/raphy/Downloads/harfbuzz/test/fuzzing/run-subset-fuzzer-tests.py)
Программа run-draw-fuzzer-tests.py найдена: ДА (/home/raphy/Downloads/harfbuzz/test/fuzzing/run-draw-fuzzer-tests.py)
Программа gtkdoc-scan найдена: ДА (/usr/bin/gtkdoc-scan)
Конфигурирование version.xml с использованием конфигурации
Программа gtkdoc-scan найдена: ДА (/usr/bin/gtkdoc-scan)
Программа gtkdoc-scangobj найдена: ДА (/usr/bin/gtkdoc-scangobj)
Программа gtkdoc-mkdb найдена: ДА (/usr/bin/gtkdoc-mkdb)
Программа gtkdoc-mkhtml найдена: ДА (/usr/bin/gtkdoc-mkhtml)
Программа gtkdoc-fixxref найдена: ДА (/usr/bin/gtkdoc-fixxref)
Конфигурирование config.h с использованием конфигурации
Цели сборки в проекте: 127
ПРЕДУПРЕЖДЕНИЕ: Проект указывает минимальную версию meson '>= 0.55.0', но использует функции, которые были добавлены в более новых версиях:
* 1.3.0: {'fs.relative_to'}
УВЕДОМЛЕНИЕ: Используются устаревшие функции:
* 0.56.0: {'meson.source_root'}
* 0.64.0: {'копировать аргумент в configure_file'}
ПРЕДУПРЕЖДЕНИЕ: Используются сломанные функции:
* 1.3.0: {'str.format: Значение, отличное от строк, целых чисел, булевых, опций, словарей и списков таких.'}
harfbuzz 10.0.1
Каталоги
prefix : /usr/local
bindir : bin
libdir : lib/x86_64-linux-gnu
includedir : include
datadir : share
cmakepackagedir : lib/x86_64-linux-gnu/cmake
Unicode callbacks (вам нужен хотя бы один)
Builtin : ДА
Glib : ДА
ICU : ДА
Font callbacks (чем больше, тем лучше)
Builtin : ДА
FreeType : ДА
Зависимости, используемые для утилит командной строки
Cairo : ДА
Chafa : ДА
Дополнительные шейперы
Graphite2 : НЕТ
WebAssembly (экспериментально): НЕТ
Платформенные шейперы (обычно не нужны)
CoreText : НЕТ
DirectWrite (экспериментально): НЕТ
GDI/Uniscribe : НЕТ
Другие функции
Документация : ДА
Привязки GObject : ДА
Интеграция Cairo : ДА
Интроспекция : ДА
Экспериментальные API : НЕТ
Тестирование
Тесты : ДА
Бенчмарк : НЕТ
Найден ninja-1.11.1 по адресу /usr/bin/ninja
ПРЕДУПРЕЖДЕНИЕ: Запуск команды настройки как `meson [options]` вместо `meson setup [options]` является неоднозначным и устаревшим.
но при использовании meson compile -C build
я получаю эти ошибки “неопределенная ссылка на”:
raphy@raohy:~/Downloads/harfbuzz$ meson compile -C build
INFO: автоматическое определение бэкенда как ninja
INFO: расчет команды backend для выполнения: /usr/bin/ninja -C /home/raphy/Downloads/harfbuzz/build
ninja: Вход в каталог `/home/raphy/Downloads/harfbuzz/build'
[253/337] Линковка цели src/libharfbuzz-icu.so.0.61001.0
FAILED: src/libharfbuzz-icu.so.0.61001.0
c++ -o src/libharfbuzz-icu.so.0.61001.0 src/libharfbuzz-icu.so.0.61001.0.p/hb-icu.cc.o -Wl,--as-needed -Wl,--no-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,libharfbuzz-icu.so.0 '-Wl,-rpath,$ORIGIN/' -Wl,-rpath-link,/home/raphy/Downloads/harfbuzz/build/src src/libharfbuzz.so.0.61001.0 /usr/lib/x86_64-linux-gnu/libicuuc.so /usr/lib/x86_64-linux-gnu/libicudata.so -Wl,--end-group
/usr/bin/ld: src/libharfbuzz-icu.so.0.61001.0.p/hb-icu.cc.o: в функции `hb_icu_script_to_script':
/home/raphy/Downloads/harfbuzz/build/../src/hb-icu.cc:80:(.text+0x32): неопределенная ссылка на `uscript_getShortName_72'
/usr/bin/ld: src/libharfbuzz-icu.so.0.61001.0.p/hb-icu.cc.o: в функции `hb_icu_script_from_script':
/home/raphy/Downloads/harfbuzz/build/../src/hb-icu.cc:103:(.text+0xc1): неопределенная ссылка на `uscript_getCode_72'
/usr/bin/ld: src/libharfbuzz-icu.so.0.61001.0.p/hb-icu.cc.o: в функции `hb_icu_unicode_combining_class(hb_unicode_funcs_t*, unsigned int, void*)':
/home/raphy/Downloads/harfbuzz/build/../src/hb-icu.cc:115:(.text+0xfb): неопределенная ссылка на `u_getCombiningClass_72'
/usr/bin/ld: src/libharfbuzz-icu.so.0.61001.0.p/hb-icu.cc.o: в функции `hb_icu_unicode_general_category(hb_unicode_funcs_t*, unsigned int, void*)':
/home/raphy/Downloads/harfbuzz/build/../src/hb-icu.cc:123:(.text+0x126): неопределенная ссылка на `u_getIntPropertyValue_72'
/usr/bin/ld: src/libharfbuzz-icu.so.0.61001.0.p/hb-icu.cc.o: в функции `hb_icu_unicode_mirroring(hb_unicode_funcs_t*, unsigned int, void*)':
/home/raphy/Downloads/harfbuzz/build/../src/hb-icu.cc:174:(.text+0x270): неопределенная ссылка на `u_charMirror_72'
/usr/bin/ld: src/libharfbuzz-icu.so.0.61001.0.p/hb-icu.cc.o: в функции `hb_icu_unicode_script(hb_unicode_funcs_t*, unsigned int, void*)':
/home/raphy/Downloads/harfbuzz/build/../src/hb-icu.cc:183:(.text+0x2b0): неопределенная ссылка на `uscript_getScript_72'
/usr/bin/ld: src/libharfbuzz-icu.so.0.61001.0.p/hb-icu.cc.o: в функции `hb_icu_unicode_compose(hb_unicode_funcs_t*, unsigned int, unsigned int, unsigned int*, void*)':
/home/raphy/Downloads/harfbuzz/build/../src/hb-icu.cc:199:(.text+0x328): неопределенная ссылка на `unorm2_composePair_72'
/usr/bin/ld: src/libharfbuzz-icu.so.0.61001.0.p/hb-icu.cc.o: в функции `hb_icu_unicode_decompose(hb_unicode_funcs_t*, unsigned int, unsigned int*, unsigned int*, void*)':
/home/raphy/Downloads/harfbuzz/build/../src/hb-icu.cc:216:(.text+0x3af): неопределенная ссылка на `unorm2_getRawDecomposition_72'
/usr/bin/ld: /home/raphy/Downloads/harfbuzz/build/../src/hb-icu.cc:220:(.text+0x3f1): неопределенная ссылка на `u_countChar32_72'
/usr/bin/ld: src/libharfbuzz-icu.so.0.61001.0.p/hb-icu.cc.o: в функции `hb_icu_unicode_funcs_lazy_loader_t::create()':
/home/raphy/Downloads/harfbuzz/build/../src/hb-icu.cc:245:(.text._ZN34hb_icu_unicode_funcs_lazy_loader_t6createEv[_ZN34hb_icu_unicode_funcs_lazy_loader_t6createEv]+0x32): неопределенная ссылка на `unorm2_getNFCInstance_72'
collect2: ошибка: ld вернул 1 код завершения
[262/337] Генерация src/HarfBuzz-0.0.gir с помощью пользовательской команды (обернутой meson для установки среды)
ninja: сборка остановлена: произошла ошибка в подпроцессе.
raphy@raohy:~/Downloads/harfbuzz$
В /usr/local/include/unicode
:
raphy@raohy:/usr/local/include/unicode$ ls
alphaindex.h currpinf.h fmtable.h meson-logs platform.h smpdtfmt.h tztrans.h ucptrie.h ulocbuilder.h uobject.h utext.h
appendable.h currunit.h format.h meson-private plurfmt.h sortkey.h ubidi.h ucsdet.h ulocdata.h upluralrules.h utf16.h
basictz.h datefmt.h formattednumber.h meson-uninstalled plurrule.h src ubiditransform.h ucurr.h uloc.h uregex.h utf32.h
brkiter.h dbbi.h formattedvalue.h messageformat2_arguments.h ptypes.h std_string.h ubrk.h udata.h umachine.h uregion.h utf8.h
build.ninja dcfmtsym.h fpositer.h messageformat2_data_model.h putil.h strenum.h ucal.h udateintervalformat.h umisc.h ureldatefmt.h utf.h
bytestream.h decimfmt.h gender.h messageformat2_data_model_names.h rbbi.h stringoptions.h ucasemap.h udat.h umsg.h urename.h utf_old.h
bytestriebuilder.h displayoptions.h gregocal.h messageformat2_formattable.h rbnf.h stringpiece.h ucat.h udatpg.h umutablecptrie.h urep.h util
bytestrie.h docmain.h icudataver.h messageformat2_function_registry.h rbtz.h stringtriebuilder.h uchar.h udisplaycontext.h unifilt.h ures.h utmscale.h
calendar.h docs icuplug.h messageformat2.h regex.h stsearch.h ucharstriebuilder.h udisplayoptions.h unifunct.h uscript.h utrace.h
caniter.h dtfmtsym.h idna.h messagepattern.h region.h symtable.h ucharstrie.h uenum.h unimatch.h usearch.h utrans.h
casemap.h dtintrv.h listformatter.h msgfmt.h reldatefmt.h tblcoll.h uchriter.h ufieldpositer.h unirepl.h uset.h utypes.h
char16ptr.h dtitvfmt.h localebuilder.h normalizer2.h rep.h test uclean.h uformattable.h uniset.h usetiter.h uvernum.h
chariter.h dtitvinf.h localematcher.h normlzr.h resbund.h timezone.h ucnv_cb.h uformattednumber.h unistr.h ushape.h uversion.h
choicfmt.h dtptngen.h localpointer.h nounit.h schriter.h tmunit.h ucnv_err.h uformattedvalue.h unorm2.h usimplenumberformatter.h vtzone.h
coleitr.h dtrule.h locdspnm.h numberformatter.h scientificnumberformatter.h tmutamt.h ucnv.h ugender.h unorm.h uspoof.h
coll.h edits.h locid.h numberrangeformatter.h search.h tmutfmt.h ucnvsel.h uidna.h unumberformatter.h usprep.h
compactdecimalformat.h enumset.h measfmt.h numfmt.h selfmt.h translit.h ucoleitr.h uiter.h unumberoptions.h ustdio.h
compile_commands.json errorcode.h measunit.h numsys.h simpleformatter.h tzfmt.h ucol.h uldnames.h unumberrangeformatter.h ustream.h
config.h fieldpos.h measure.h parseerr.h simplenumberformatter.h tznames.h uconfig.h ulistformatter.h unum.h ustring.h
curramt.h filteredbrk.h meson-info parsepos.h simpletz.h tzrule.h ucpmap.h ulocale.h unumsys.h ustringtrie.h
Я также установил библиотеку libicu из репозиториев Ubuntu 24.04, но проблема сохраняется:
raphy@raohy:~$ sudo apt-cache search libicu
[sudo] пароль для raphy:
icu-devtools - Утилиты разработки для Международных компонентов для Юникода
libicu-dev - Файлы разработки для Международных компонентов для Юникода
libicu74 - Международные компоненты для Юникода
libicu4j-4.4-java - Библиотека для поддержки Юникода и интернационализации
libicu4j-java - Библиотека для поддержки Юникода и интернационализации
libicu70 - Международные компоненты для Юникода
raphy@raohy:~$ sudo apt-get install libicu-dev libicu7
libicu70 libicu74
raphy@raohy:~$ sudo apt-get install libicu-dev libicu74 libicu70
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение состояния информации... Готово
libicu-dev уже актуальная версия (74.2-1ubuntu3.1).
libicu74 уже актуальная версия (74.2-1ubuntu3.1).
libicu70 уже актуальная версия (70.1-2).
Обновление 01)
Пытался также указать libdir в настройке, но получил кучу ошибок:
raphy@raohy:~/Downloads/harfbuzz$ meson setup --includedir unicode /usr/local/include/unicode --libdir /usr/local/lib
Каталог уже сконфигурирован.
Просто выполните команду сборки (например, ninja) и Meson заново сгенерирует по мере необходимости.
Запустите "meson setup --reconfigure", чтобы заставить Meson пересоздать.
Если ошибки сборки сохраняются, запустите "meson setup --wipe", чтобы полностью пересобрать с теми же параметрами, что и при конфигурации сборки.
raphy@raohy:~/Downloads/harfbuzz$ meson setup --reconfigure
ERROR: Должен быть указан хотя бы один каталог.
raphy@raohy:~/Downloads/harfbuzz$ meson setup --reconfigure /usr/local/lib
Ошибка при выполнении последнего вызова (последний в стеке):
Файл "/usr/lib/python3/dist-packages/mesonbuild/mesonmain.py", строка 194, в run
return options.run_func(options)
^^^^^^^^^^^^^^^^^^^^^^^^^
Файл "/usr/lib/python3/dist-packages/mesonbuild/msetup.py", строка 358, в run
app.generate()
Файл "/usr/lib/python3/dist-packages/mesonbuild/msetup.py", строка 174, в generate
env = environment.Environment(self.source_dir, self.build_dir, self.options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Файл "/usr/lib/python3/dist-packages/mesonbuild/environment.py", строка 507, в __init__
os.makedirs(self.scratch_dir, exist_ok=True)
Файл "<frozen os>", строка 225, в makedirs
PermissionError: [Errno 13] Отказано в доступе: '/usr/local/lib/meson-private'
ERROR: Неправильная ошибка OSError python. Это, вероятно, не ошибка Meson, а проблема с вашей средой сборки.
Что я пропускаю или что я делаю не так? Как заставить это работать?
ОС: Ubuntu 24.04
Ответ или решение
Решение проблемы "undefined reference" при сборке HarfBuzz в Ubuntu 24.04
Введение
Сборка и установка библиотеки HarfBuzz иногда может сопровождаться проблемами, в том числе ошибками с неразрешёнными ссылками. В данном случае вы столкнулись с ошибками, связанными с ICU (International Components for Unicode). В частности, первым делом вам необходимо убедиться, что вы используете правильную версию библиотек ICU.
Проблема
Ошибка "undefined reference to" указывает на то, что компилятор не может найти определённые функции, предоставляемые ICU, такие как uscript_getShortName_72
, u_getCombiningClass_72
, и другие. Это может происходить по следующим причинам:
- Несоответствие версий: Ваша версия ICU не соответствует версии, на которую ссылаются функции. Функции с номером 72 указывают на ICU 72 версии. Если у вас установлена более старая версия ICU, это и будет причиной ошибки.
- Неправильный путь: Во время конфигурации вы могли указать неверные пути для библиотек или заголовочных файлов.
Решение проблемы
-
Проверьте установленную версию ICU:
Убедитесь, что у вас установлена правильная версия ICU. Для этого выполните команду:dpkg -l | grep libicu
Убедитесь, что у вас установлена версия ICU, которая включает требуемые функции (то есть 72 или выше).
-
Обновите ICU:
Убедитесь, что вы используете последнюю версию библиотеки ICU. Если в вашем репозитории нет необходимых пакетов, вы можете попробовать установить утилиты ICU из исходников. Это можно сделать следующим образом:sudo apt-get remove --purge libicu-dev sudo apt-get install build-essential git clone https://github.com/unicode-org/icu.git cd icu git checkout release-72-1 ./configure make sudo make install
-
Правильно укажите пути при конфигурации:
Убедитесь, что вы правильно указываете пути к заголовочным файлам и библиотекам ICU при конфигурации Meson. Попробуйте следующие команды:meson setup build --includedir=/usr/local/include/unicode --libdir=/usr/local/lib
-
Очистка старой конфигурации:
Если вы уже пытались сконфигурировать проект, возможно, стоит очистить старую конфигурацию и начать заново:meson setup build --wipe
Затем выполните конфигурацию заново с правильными параметрами.
-
Сборка проекта:
После выполнения шага 3, попробуйте снова:meson compile -C build
Заключение
Если после выполнения всех вышеперечисленных действий проблемы не исчезнут, попробуйте проверить документацию HarfBuzz или обсудить вашу проблему на форумах сообщества. Также не забывайте проверять более поздние версии как HarfBuzz, так и ICU, поскольку обновления могут содержать исправления ошибок и улучшения.
Следуя данным рекомендациям, вы сможете успешно собрать и установить HarfBuzz в своей системе Ubuntu 24.04.