Portál AbcLinuxu, 10. května 2025 05:32
makepkg
použít pro kompilaci icc
?
Ještě jsem pátral, kde se dalo, a dle informací, které jsem našel, není potřeba zasahovat přímo do makefile, ale stačí nastavit CC a další proměnné při ./configure
Zkoušel jsem například CC=icc CXX=icpc a další pro překlad programu easytag, s některými se přeložil, ale nefungoval, s jinými se vůbec nepřeložil.
./configure ...tak se prepise na
CC=icc ./configure ...
Tak jsem s tím zkusil teď přeložit ještě scribus, a nepodařilo se mi to. Troskotá to na různých undefined reference to…
gdk-pixbuf-xlibrgb.c:(.text+0x5426): undefined reference to `_intel_fast_memset' collect2: ld returned 1 exit status make[3]: *** [scribus] Error 1(Normálně s gcc nemám žádný problém)
collect: ld returned 1 exit status
, je to prave tim, ze nemuze slinkovat objektove soubory.
CC='icc -cxxlib-icc' CXX='icpc -cxxlib-icc'se to zkompiluje. Program ale při spouštění zhavaruje na tom, že nemůže nalézt intelovské knihovny. Mám za to, že by to měl řešit parametr LDFLAGS, ale když jsem ho zadal jako LDFLAGS='-L/opt/intel/cc/9.1.042/lib', tak kompilace po delší době skončila s chybou
compilation aborted for undomanager.cpp (code 2) make[3]: *** [undomanager.o] Error 1Chjo
ldconfig binarka
?ldconfig -pPokud ne, najdi ty knihovny v systemu a proved
ldconfig -n adresar_s_knihovnami
QObject::connect: No such signal ScToolBar::prefsChanged() QObject::connect: (sender name: 'unnamed') QObject::connect: (receiver name: 'uWidget') Nelze najít modul: /usr/lib/scribus/plugins//libscriptplugin.so.0.0.0: undefined symbol: _ZSt14_Raise_handler Nelze najít modul: /usr/lib/scribus/plugins//libscribusexportpixmap.so.0.0.0: undefined symbol: _ZSt14_Raise_handler Nelze najít modul: /usr/lib/scribus/plugins//libsaveastemplateplugin.so.0.0.0: undefined symbol: _ZSt14_Raise_handler Nelze najít modul: /usr/lib/scribus/plugins//libnewfromtemplateplugin.so.0.0.0: undefined symbol: _ZSt14_Raise_handlerTohle už jsou ale naprosto jiné chyby. Zkouším teď kompilovat abiword, a jestli dopadne stejně, asi se na to vy… a icc si nechám na dlouhé zimní večery
ldd
.
Neúspěšně ukončen (SIGABRT)Icc jde pryč, a já zkusím zjistit, jak kompilovat balíčky s použitím profilování gcc, o kterém psal „Deda Jabko“ Každopádně děkuji za vynaložený čas a snahu pomoci.
strace
.
Čtu tady složité diskuse a přitom je to tak snadné: Stačí editovat soubor /etc/makepkg.conf
a přidat si do něj dva řádky:
export CC="icc" export CXX="icpc"
Samozřejmě je nutné mít v /etc/ld.so.conf
odkaz na knihovny, tedy něco jako: /opt/intel/cc/9.1.045/lib
(Verze je už dnes samozřejmě jiná.) A symlinky na icc a icpc snad ani není nutné připomínat.
Existují bohužel balíčky, které proměnnou CC ignorují. Pak jde buď o špatně vychované balíčky nebo o balíčky, které dobře vědí, proč to dělají.
Závěrem bych rád doplnil, že má kompilace bashe pomocí icc skončila před nedávnem takovým fiaskem, že už jsem raději vůbec alternativní kompilátor nezkoušel. Určitě to ale zase někdy zkusím, až mě přejde zděšení. Tenkrát mě zachránil C-Shell, který jsem čirou náhodou měl nainstalovaný.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.