LINUX.ORG.RU

Собрать кикад со статическими библиотеками. Возможно ли?

 , , ,


0

1

Раньше была такая опция, сейчас в CmakeLists.txt не нахожу ее. Проблема в том, что на ноутбуке у меня жутко слабое железо и компиляция кикада длится часов 14-16. После каждого обновления зависимостей эта зараза опять перестает работать. Вот и хочу собрать статически, чтобы не было никаких проблем с зависимостями.

Дистрибутив - gentoo, без всякой дряни вроде systemd, elogind и т.п. вендовозных игрушек.

P.S. А еще было бы идеальным полностью удалить зависимости кикада от пытхона.

☆☆☆☆☆

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

Да там такая гора зависимостей, что, боюсь, ему вообще придется отдельную песочницу собирать…

Вообще, кстати, это идея: поставить минимальную генту где-нибудь в отдельной директории и там собирать всяких жиробасов. А запускать в чруте…

Поставил бы бинарный дистрибутив, но уже привык к генте, а на основе нее бинарный только calculate, но мне он не нравится.

Eddy_Em ☆☆☆☆☆
() автор топика
Последнее исправление: Eddy_Em (всего исправлений: 1)

Вот и хочу собрать статически

А ручками? Взять *.a либ, распаковать их в папку сборки кикад, в Makefile подменить все -l на *.o? Совесть не позволяет?

anonymous
()

P.S. А еще было бы идеальным полностью удалить зависимости кикада от пытхона.

ЕМНИП, питон нужен для каких-то плагинов и был опционален. Уже прибили гвоздями?

Meyer ★★★★★
()
Ответ на: комментарий от CYB3R

используй флатпак

Что это?

P.S. Погуглил. Я этот вариант выше и обдумывал: поставить генту-минималку в чрут и там собирать подобных жиробасов.

Вообще, очень обидно, что кикад зависит от такого бешеного количества всякой дряни. А еще обидней, что он зависит от культяпок!

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

Прибили намертво. Но, к сожалению, и в генте до сих пор полностью избавиться от этой заразы не получается. Вечно какие-то чудаки на букву «м» на этой дерьмоте пишут какие-нибудь системные сервисы.

Eddy_Em ☆☆☆☆☆
() автор топика

Проблема в том, что на ноутбуке у меня жутко слабое железо и компиляция кикада длится часов 14-16.

Подключите бинхост да подтяните пакеты.

fernandos ★★★
()
Ответ на: комментарий от deity

У меня и домашний, и рабочий компьютер без elogind. И все отлично работает. Сейчас вот тоже снес на ноуте elogind, ошметки consolekit и udisks. Ничего из этого не нужно. А на иксы можно ставить suid-бит. Но вроде как хватает юза suid.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от fernandos

Физика не пощадила Макса Планка. Стоит ли говорить, что у @Eddy_Em просто не было шансов.

grem ★★★★★
()

Когда телескопы работают, астрономы лижут я... канпеляют генты на жутко дохлых лаптопах.

Перейди на какойнить mxlinux, в котором есть поддержка даже 32битных компов, отсуццтвует системдэ и главное - не нужно канпелировать кикад с зависимостями, потому что он есть опакеченый.

ChekPuk ★★★
()

cmake смотрит на опции из окружения, т.е. достаточно сделать при конфигурировании:

LDFLAGS=-static cmake ..

и kicad будет линковаться со статическими либами. Проверить зависимости итогового бинаря можно через:

ldd path_to_kicad

ну или readelf -a path_... | less покопать.

pavlick ★★
()
Ответ на: комментарий от pavlick

ЗЫ: там LDFLAGS=-static cmake .. написан в одну строку, это одна команда. Глянул с телефона - запись в две строки.

pavlick ★★
()
Ответ на: комментарий от pavlick

и kicad будет линковаться со статическими либами.

Ога, особенно красиво он подлинкуется к статическим либам каких-нибудь иксов.

С графическими программами одним -static’ом не обойтись.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Действительно, не получается.

Тогда наверное проще глянуть на выхлоп ldd kicad и скопировать либы, в «загончик» и запускать через LD_LIBRARY_PATH="загончик" kicad.

pavlick ★★
()
Ответ на: комментарий от pavlick

и запускать через LD_LIBRARY_PATH="загончик" kicad.

А тут c Qt-программами, коей является kicad, так просто не получится. Учитывая что по ldd не полный список библиотек показывается. К примеру, libqxcb.so или libqwayland-egl.so подгружаются в runtime через dl и т. д.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Значит брать выхлоп pldd после типичного рабочего цикла.

pavlick ★★
()
Ответ на: комментарий от CYB3R

Ну, просто не понимаю, зачем было всякую дрянь использовать (да еще и пытхоном обмазываться)? Почему нельзя было нарисовать фронтэнд на GLEW (все равно же он есть в зависимостях)? А для кнопочек-менюшек использовать nuklear. Получилось бы нативно и не жирно.

Ну и в общем-то у кикада уж очень много библиотек в зависимостях. Нехорошо это. Зачем там libcurl? Зачем там libcairo? Зачем libcrypto? А libnotify? Всякие libtiff/libpng/libjpeg заменяются одной библиотекой. И т.д., и т.п.

А сейчас внимательно глянул и увидел в зависимостях libasound — это вообще что за бред? Кикад что — умеет музыку играть?

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

фронтэнд на GLEW

для кнопочек-менюшек использовать nuklear

Получилось бы нативно и не жирно

Мне кажется, здесь где-то 4.2. Ну да ладно, что тебе мешает сделать свой фронтенд для wxWidgets на GLEW и nuklear?

Зачем там libcurl? Зачем там libcairo? Зачем libcrypto? А libnotify? Всякие libtiff/libpng/libjpeg заменяются одной библиотекой. И т.д., и т.п.

Ты просто не шаришь.

А сейчас внимательно глянул и увидел в зависимостях libasound — это вообще что за бред? Кикад что — умеет музыку играть?

Я вот смотрю и не вижу такой зависимости. Можешь в конкретное место ткнуть?

CYB3R ★★★★★
()
Ответ на: комментарий от CYB3R
ldd /usr/local/bin/eeschema 
        linux-vdso.so.1 (0x00007fff2c1bd000)
        libwx_gtk3u_gl-3.0-gtk3.so.0 => /usr/lib64/libwx_gtk3u_gl-3.0-gtk3.so.0 (0x00007f2d79535000)
        libwx_gtk3u_aui-3.0-gtk3.so.0 => /usr/lib64/libwx_gtk3u_aui-3.0-gtk3.so.0 (0x00007f2d79491000)
        libwx_gtk3u_adv-3.0-gtk3.so.0 => /usr/lib64/libwx_gtk3u_adv-3.0-gtk3.so.0 (0x00007f2d79290000)
        libwx_gtk3u_html-3.0-gtk3.so.0 => /usr/lib64/libwx_gtk3u_html-3.0-gtk3.so.0 (0x00007f2d7919f000)
        libwx_gtk3u_core-3.0-gtk3.so.0 => /usr/lib64/libwx_gtk3u_core-3.0-gtk3.so.0 (0x00007f2d78ac6000)
        libwx_baseu_net-3.0-gtk3.so.0 => /usr/lib64/libwx_baseu_net-3.0-gtk3.so.0 (0x00007f2d78a76000)
        libwx_baseu-3.0-gtk3.so.0 => /usr/lib64/libwx_baseu-3.0-gtk3.so.0 (0x00007f2d78786000)
        libwx_baseu_xml-3.0-gtk3.so.0 => /usr/lib64/libwx_baseu_xml-3.0-gtk3.so.0 (0x00007f2d78772000)
        libwx_gtk3u_stc-3.0-gtk3.so.0 => /usr/lib64/libwx_gtk3u_stc-3.0-gtk3.so.0 (0x00007f2d78438000)
        libGLEW.so.2.2 => /usr/lib64/libGLEW.so.2.2 (0x00007f2d78384000)
        libcairo.so.2 => /usr/lib64/libcairo.so.2 (0x00007f2d7824b000)
        libpixman-1.so.0 => /usr/lib64/libpixman-1.so.0 (0x00007f2d781a8000)
        libGL.so.1 => /usr/lib64/libGL.so.1 (0x00007f2d78120000)
        libGLU.so.1 => /usr/lib64/libGLU.so.1 (0x00007f2d780af000)
        libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x00007f2d78021000)
        libssl.so.1.1 => /usr/lib64/libssl.so.1.1 (0x00007f2d77f8a000)
        libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1 (0x00007f2d77ca6000)
        libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/10.3.0/libstdc++.so.6 (0x00007f2d77ace000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f2d77998000)
        libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/10.3.0/libgcc_s.so.1 (0x00007f2d7797e000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2d7795e000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f2d777a3000)
        libgtk-3.so.0 => /usr/lib64/libgtk-3.so.0 (0x00007f2d76fa4000)
        libgdk-3.so.0 => /usr/lib64/libgdk-3.so.0 (0x00007f2d76edb000)
        libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x00007f2d76e79000)
        libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f2d76d38000)
        libpango-1.0.so.0 => /usr/lib64/libpango-1.0.so.0 (0x00007f2d76cef000)
        libgdk_pixbuf-2.0.so.0 => /usr/lib64/libgdk_pixbuf-2.0.so.0 (0x00007f2d76cc3000)
        libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007f2d76b80000)
        libnotify.so.4 => /usr/lib64/libnotify.so.4 (0x00007f2d76b76000)
        libSDL2-2.0.so.0 => /usr/lib64/libSDL2-2.0.so.0 (0x00007f2d76a2f000)
        libpangocairo-1.0.so.0 => /usr/lib64/libpangocairo-1.0.so.0 (0x00007f2d76a20000)
        libXxf86vm.so.1 => /usr/lib64/libXxf86vm.so.1 (0x00007f2d76a19000)
        libSM.so.6 => /usr/lib64/libSM.so.6 (0x00007f2d76a0e000)
        libpng16.so.16 => /usr/lib64/libpng16.so.16 (0x00007f2d769d4000)
        libjpeg.so.62 => /usr/lib64/libjpeg.so.62 (0x00007f2d7694f000)
        libtiff.so.5 => /usr/lib64/libtiff.so.5 (0x00007f2d768cb000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f2d768ad000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f2d768a7000)
        libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f2d76876000)
        libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007f2d7682d000)
        libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007f2d76768000)
        libEGL.so.1 => /usr/lib64/libEGL.so.1 (0x00007f2d76752000)
        libxcb-shm.so.0 => /usr/lib64/libxcb-shm.so.0 (0x00007f2d7674d000)
        libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f2d76721000)
        libxcb-render.so.0 => /usr/lib64/libxcb-render.so.0 (0x00007f2d76710000)
        libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007f2d76703000)
        libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f2d766ec000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f2d79642000)
        libGLdispatch.so.0 => /usr/lib64/libGLdispatch.so.0 (0x00007f2d76634000)
        libGLX.so.0 => /usr/lib64/libGLX.so.0 (0x00007f2d76600000)
        libnghttp2.so.14 => /usr/lib64/libnghttp2.so.14 (0x00007f2d765d3000)
        libgmodule-2.0.so.0 => /usr/lib64/libgmodule-2.0.so.0 (0x00007f2d765cd000)
        libXi.so.6 => /usr/lib64/libXi.so.6 (0x00007f2d765b9000)
        libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007f2d765b1000)
        libcairo-gobject.so.2 => /usr/lib64/libcairo-gobject.so.2 (0x00007f2d765a5000)
        libatk-1.0.so.0 => /usr/lib64/libatk-1.0.so.0 (0x00007f2d7657b000)
        libatk-bridge-2.0.so.0 => /usr/lib64/libatk-bridge-2.0.so.0 (0x00007f2d76544000)
        libepoxy.so.0 => /usr/lib64/libepoxy.so.0 (0x00007f2d76416000)
        libfribidi.so.0 => /usr/lib64/libfribidi.so.0 (0x00007f2d763f5000)
        libgio-2.0.so.0 => /usr/lib64/libgio-2.0.so.0 (0x00007f2d76216000)
        libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0 (0x00007f2d76100000)
        libpangoft2-1.0.so.0 => /usr/lib64/libpangoft2-1.0.so.0 (0x00007f2d760e9000)
        libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x00007f2d760dc000)
        libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00007f2d760cf000)
        libXcomposite.so.1 => /usr/lib64/libXcomposite.so.1 (0x00007f2d760c8000)
        libXdamage.so.1 => /usr/lib64/libXdamage.so.1 (0x00007f2d760c3000)
        libffi.so.7 => /usr/lib64/libffi.so.7 (0x00007f2d760b7000)
        libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f2d7603f000)
        libasound.so.2 => /usr/lib64/libasound.so.2 (0x00007f2d75f51000)
        libICE.so.6 => /usr/lib64/libICE.so.6 (0x00007f2d75f31000)
        libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f2d75f28000)
        libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f2d75f15000)
        libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f2d75f10000)
        libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f2d75f08000)
        libdbus-1.so.3 => /usr/lib64/libdbus-1.so.3 (0x00007f2d75eba000)
        libatspi.so.0 => /usr/lib64/libatspi.so.0 (0x00007f2d75e82000)
        libmount.so.1 => /lib64/libmount.so.1 (0x00007f2d75e23000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f2d75e09000)
        libgraphite2.so.3 => /usr/lib64/libgraphite2.so.3 (0x00007f2d75de3000)
        libbsd.so.0 => /usr/lib64/libbsd.so.0 (0x00007f2d75dc7000)
        libblkid.so.1 => /lib64/libblkid.so.1 (0x00007f2d75d76000)

13-я строчка снизу.

И вообще, я считаю ТАКОЙ список зависимостей бредом! Ну ладно бы 5-6 библиотек…

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

Используй lddtree, хотя бы поймёшь, что от чего зависит.

CYB3R ★★★★★
()
Ответ на: комментарий от Eddy_Em

А чем пользуешься? Вместо докера — чрут? Вместо контейнеров LXC — вириуалки KVM? Вместо systemd — OpenRC? Вместо композиторов Wayland — оконные менеджеры X.Org? Вместо Debian — Devuan? Специально выбираешь наиболее старые технологии? Зачем?

AndreBoth
()
Ответ на: комментарий от AndreBoth

Я выбираю не «наиболее старые технологии», а удобные и надежные.

Дерьмом хипстерским пользоваться не собираюсь!

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

Ты бы еще вместо плюсов на C писал. А еще — вместо офисных пакетов — для верстки любых документов целый латех использовал.

AndreBoth
()
Ответ на: комментарий от AndreBoth

Ты бы еще вместо плюсов на C писал.

Наконец то! Истина прорвалась! Ты лучший в этом топе, а твой совет достоин золотых скрижалей! Осталось только, чтобы к нему прислушались.

anonymous
()
Ответ на: комментарий от anonymous

Ну вот сидишь ты по уши в собственном посконном дерьме. Сильно легче?

Психоз утихает, меньше расчесывает лысину.

anonymous
()
Ответ на: комментарий от Zhbert

Может мне кто-нибудь внятно объяснить весь этот фап на флэтпаки? Сколько не тыкал палкой, какой-то кусок говна, жирный, ненативно выглядящий, падающий и…вот ради того, чтобы что?

Oberstserj ★★
()
Ответ на: комментарий от Oberstserj

Я им тоже не пользуюсь вообще и считаю жирной ненужной фигней, но в таких вот случаях, как у Эдика, он вполне может выручить, как и snap.

Zhbert ★★★★★
()
Ответ на: комментарий от Oberstserj

Он да. Но посоветовать инструмент и переживать, что вопрошающий любит принципиально жрать кактус, это разные вещи.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

любит принципиально жрать кактус

Ну может ему достаточно? Почему сразу кактус? Это как утверждать что все должны ходить только с флагманскими смартфонами, потому что там камера и все дела, несмотря на то, что почти половина людей используют камеру от случая к случаю, на качество им насрать, а остальной функционал и вовсе не используется. А ты сразу про кактус.

Oberstserj ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.