LINUX.ORG.RU

Xorg Cross Compile ARMv7 Undefined symbols for architecture armv7

 , , ,


0

1

Господа, я новичок, хочу освоить компиляцию и сборку под разные системы. Взялся собрать систему почти с нуля. В данный момент компилирую xorg-server 21.1.4 на виртуалке macos catalina из командной строки. Скомпилировал все зависимости, которые компилятор требовал от меня. Когда компилирую с помощью meson с такими параметрами:

meson build --prefix /usr/local/arm-apple-darwin -Ddefault_library=static -Dglx=false -Dxephyr=false -Dxnest=false -Dxwin=false -Dxquartz=false -Dsecure-rpc=false -Dipv6=false -Dinput_thread=false  -Dint10=false  -Dscreensaver=false -Dagp=false -Dxpbproxy=false --cross-file=../../darwin-cross-compile.txt

_____darwin-cross-compile.txt______

[binaries]
c = 'clang'
cpp = 'clang++'
objc = 'clang'
objcpp = 'clang++'
ar = 'ar'
strip = 'strip'
pkgconfig = 'pkg-config'

[built-in options]
c_args = ['-arch', 'armv7', '-miphoneos-version-min=8.4', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk']
cpp_args = ['-arch', 'armv7', '-miphoneos-version-min=8.4', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk']
c_link_args = ['-arch', 'armv7', '-miphoneos-version-min=8.4', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk']
cpp_link_args = ['-arch', 'armv7', '-miphoneos-version-min=8.4', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk']
objc_args = ['-arch', 'armv7', '-miphoneos-version-min=8.4', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk']
objcpp_args = ['-arch', 'armv7', '-miphoneos-version-min=8.4', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk']

[properties]
root = '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer'
has_function_printf = true
has_function_hfkerhisadf = false

[host_machine]
system = 'darwin'
cpu_family = 'arm'
cpu = 'arm'
endian = 'big'
______________________________________________________

Компилируется, правда теряет некоторые ссылки, но я их восстанавливую путем редактирования build.ninja. После ввода команды

ninja install
выдает:

[0/1] Installing files.
Installing hw/vfb/Xvfb to /usr/local/arm-apple-darwin/bin
Installing /Users/admin/source/xorg-server-21.1.4/build/hw/vfb/Xvfb.1 to /usr/local/arm-apple-darwin/share/man/man1
Installing /Users/admin/source/xorg-server-21.1.4/build/Xserver.1 to /usr/local/arm-apple-darwin/share/man/man1
Installing /Users/admin/source/xorg-server-21.1.4/dix/protocol.txt to /usr/local/arm-apple-darwin/lib/xorg

И на этом все. При компиляции вылазят несколько warning, но не критичные.

Если компилить с помощью autotools с такими параметрами:

./configure --disable-static --enable-shared --prefix=$THEOS --host=arm --enable-glx=no --enable-xquartz=no --enable-xephyr=no --enable-input-thread=no --enable-secure-rpc=no --enable-ipv6=no --enable-xwin=no --enable-xnest=no --enable-standalone-xpbproxy=no --enable-int10-module=no --enable-screensaver=no --enable-pciaccess=no --enable-agp=no --enable-glamor=no --enable-vgahw=no

То где-то в конце выдает:

 CCLD     Xorg
Undefined symbols for architecture armv7:
  "_ddxInputThreadInit", referenced from:
      _xorg_symbols in sdksyms.o
  "_drmAuthMagic", referenced from:
      _DRI2ScreenInit in libdri2.a(dri2.o)
  "_drmFreeDevice", referenced from:
      _dri2_probe_driver_name in libdri2.a(dri2.o)
  "_drmFreeVersion", referenced from:
      _dri2_probe_driver_name in libdri2.a(dri2.o)
  "_drmGetDevice", referenced from:
      _dri2_probe_driver_name in libdri2.a(dri2.o)
  "_drmGetVersion", referenced from:
      _dri2_probe_driver_name in libdri2.a(dri2.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Здесь я уже не понимаю что ему надо, так как ссылки на его же скомпилированные библиотеки теряются.

Прошу помощи господа, 3 дня уже сижу и никак.



Последнее исправление: soulilya (всего исправлений: 1)

root = ‘/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer’

Ты собираешь X.Org под iPhone или просто под ARM? Если последнее посмотри как оно сделано в каком-нибудь Raspbian или Ubuntu в их рецептах сборки пакета под arm64.

Если первое, то вряд оно толком вообще там работает.

EXL ★★★★★
()

Если ты новичок, то зачем пытаешься скрестить ужа с ежём? Какой x.org на iphone? Ты простые hello world’ы сначала кросскомпилируй и разберись что там к чему… для твоих перформансов с арм тебе можно посоветовать малинку с убунтой, да и вообще кросскомпиляция это довольно серьёзная хрень, и почти везде она работает через пень колоду. Кроме эпл девайсов, но у эпл свои сдк и своя экосистема поверх BSD по сути, это не линукс и xorg оттуда выпилили ещё году в 2010, наверное. У них quartz, свой графический и звуковой сервера, тч для запуска на айфоне софта, он должен поддерживаться самим айфоном, его ос, либами и всё такое. И не все либы могут быть в наличии в твоей кате amd64 хостовой системе, это уже путь джедая, а не новичка. Для кросс компиляции лучше начать с Go

menangen ★★★★★
()
Последнее исправление: menangen (всего исправлений: 1)
Ответ на: комментарий от menangen

Если первое, то вряд оно толком вообще там работает.

Чувак запустил, правда в оболочке приложения.

Если ты новичок, то зачем пытаешься скрестить ужа с ежём? Какой x.org на iphone? Ты простые hello world’ы сначала кросскомпилируй и разберись что там к чему… для твоих перформансов с арм тебе можно посоветовать малинку с убунтой, да и вообще кросскомпиляция это довольно серьёзная хрень, и почти везде она работает через пень колоду.

Обычные вещи я и так могу компилировать. У меня на интерпретируемых языках 10 лет опыта. В инсте еще компилировал на C и C++. Но там банальщина, сам понимаешь.

У них quartz, свой графический и звуковой сервера, тч для запуска на айфоне софта, он должен поддерживаться самим айфоном, его ос, либами и всё такое.

Я пробовал копилить xorg-server из квараца, результат тот же. И если посмотреть, разницы там вообще никакой нет, т. е. изменения в коде xorg-server вообще незначительны.

Для кросс компиляции лучше начать с Go

Это мой второй язык. То есть я часто на нем не пишу, но есть пара проектов.

soulilya
() автор топика