Portál AbcLinuxu, 12. května 2024 21:54


Dotaz: gcc include problem

15.2.2011 11:10 Arthur
gcc include problem
Přečteno: 472×
Odpovědět | Admin
Zdravim,

mam open-source projekt, ktery bez problemu zkompiluju pod linuxem via gcc4.2-4.4, 32 i 64 bit. Bohuzel potrebuju, aby to chodilo i ve Widlich.

Snazim se to udelat pomoci aktualni verze MinGW (gcc4.5.2), ale v jednom miste to vzdy spadne protoze to nemuze najit v jednom souboru na radku
#include <complex>
knihovnu complex, ktera se samozrejme nachazi na svem miste v adresari, ktery ma gcc/g++ mezi defaultnimi "include dirs", a z nehoz cte v pohode i ostatni hlavickove soubory.

Zkousel jsem to
  1. nakopirovat do vsech moznych adresaru pripadajicich do uvahy,
  2. gcc/g++ -I dir

a furt nic, nechapu, nevim uz jak dal ...

konfigurace probiha pomoci CMake, parametry kompilace nechavam vychozi, pouze vybiram, co se ma zbuildovat a co ne

dekuju za kazdy napad
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.2.2011 16:06 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: gcc include problem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nebubde problém v rozdílu dvou těchto dvou řádků - což jsou úplně jiné headery:
#include <complex>
#include <complex.h>
první je ze „C++ Standard Library“ a druhá je céčková knihovna.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
15.2.2011 19:30 arthur
Rozbalit Rozbalit vše Re: gcc include problem
nene, jednak jsou k dispozici oba dva, a jednak je to soubor .cxx, takze k nemu prislusi complex. Navic jak jsem jiz psal, v linuxu napoprve bez chybicky a funguje to, takze ve zdrojacich chyba asi nebude, spis nekde v konfiguraci kompilace nebo tak nejak...

dale jsem zjistil, ze pred touto chybou to v klidu zkompiluje 2 moduly, v nichz je tato inkluze zahrnuta uplne stejne .. :-)

Kdyz jsem mu zadal absolutni cestu k souboru, tak ho to uz "naslo", nicmene asi 20 obrazovek chybovych hlaseni (pochopitelne)
15.2.2011 20:07 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: gcc include problem
Heh. Ako som tu už kedysi písal: kým to funguje tak cmake je fajn. Keď je problém, tak s Makefile-om ho človek nájde, s cmake-om príde o nervy.

Skús

make VERBOSE=1

alebo v CMakeLists.txt nastaviť CMAKE_VERBOSE_MAKEFILE nech nám cmake povie, čo presne robí. Základom je, že ak mám header v /foo/bar/myheader.h, tak kompilátor by mal dostať prepínač -I/foo/bar . Neviem či tam medzera za -I môže vadiť, alebo nie. Ak tam dáš len -Ibar tak sa hľadá v podadresári bar, v adresári, v ktorom beží ten kompilátor. Ak máš súbory rozhádzané do viacerých adresárov, tak current-directory pre kompilátor je vždy iný. Takže by som dal prednosť absolútnej ceste pre relatívnou.

Skrátka zisti aké parametre dostane kompilátor, aký má aktuálny adresár, keď kompiluje ten problematický súbor, a či tá cesta za -I umožní dospieť k existujúcemu súboru. Ako k správnej hodnote za -I dokopať cmake ... to neviem ;-)
16.2.2011 09:07 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: gcc include problem
Nemyslel jsem, že je chyba ve zdrojáku, ale že nejsou k dispozici obě knihovny… :)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
Voty avatar 16.2.2011 15:17 Voty | skóre: 12 | blog: gemini
Rozbalit Rozbalit vše Re: gcc include problem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mno, možná by bylo vhodné se připsat i tu chybu, kterou to vypíše, případně další věci okolo. Zdá se, že pokud hlavičkový soubor existuje, bude se chyba schovávat někde jinde.
Jednu rozbil a tu druhou ztratil.
16.2.2011 19:50 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: gcc include problem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nechci vás zklamat, ale komplexní čísla jsou podle C99 nepovinná část. Takže je vůbec otázka, jestli váš překladač a standardní knihovna je podporují.
16.2.2011 21:46 arthur
Rozbalit Rozbalit vše drobny posun
Odpovědět | | Sbalit | Link | Blokovat | Admin
zda se, ze jsem prisel na to,kde byl primarni problem:

v danem miste se nevolal gcc ale gccxml, ktery nasledne pousti gcc. gccxml ma svuj vlastni include dir list, ktery je zrejme nezavisly na tom, co pouziva samotny gcc. Kdyz jsem do nej pridal cestu ke standardnim knihovnam, tak uz to knihovnu complex naslo, ale chybovych hlaseni tolik, ze to sem ani nema cenu posilat.

pujdu na to z jine strany, mozna nekdo zkousel to same co ja: jedna se o projekt ITK - insight toolkit (www.itk.org), ktery je implementovan v c/c++ a umoznuje vytvorit wrapper do Javy, Pythonu a tcl Ja pisu v aplikaci v Jave (C/C++ moc neumim) a potrebuju z ni volat funkce ITK. Toho dosahnu tak, ze zkompiluju CableSwig a nasledne ITK + wrappery do Javy pomoci toho CableSwigu. Vsechno se da udelat pomerne jednoduse pomoci CMake, JDK a GCC (v linuxu). Funguje to i v te me aplikaci. Jedine co potrebuju, je reprodukovat tento postup pod Win32. Melo by byt mozne pouzit GCC (mingw) nebo MS VisualC++. S MSVC express jsem to zkousel taky, ale vysledky jsou jeste horsi.

Z webu se mi podarilo stahnout hotove binarky, ale je to nejaka neoficialni kompilace a vubec nefunguje. Taky nevim, jak moc je vysledek zavisly na verzi a podverzi Windows...

Byl by treba nekdo ochoten to sam zkusit? tak poslu podrobnosti a na konci uspesne cesty treba i nejakou odmenu dle chuti ;-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.