Fórumok
Szeretnék fordítani a gcj-vel. A könyvtárfa így néz ki:
./include-cni/
usb/
linux/DeviceImpl.h
USBException.h
.....
./native/
linux.cc
A parancssor és a válaszul kapott szöveg itt van:
$ gcj -g -O -Iinclude-cni -c native/linux.cc -o native/linux.o
cc1plus: warning: command line option "-fbootclasspath=include-cni/:./:/usr/share/java/libgcj-4.4.5.jar" is valid for Java but not for C++
native/linux.cc:53:34: error: usb/linux/DeviceImpl.h: Nincs ilyen fájl vagy könyvtár
native/linux.cc:54:36: error: usb/linux/USBException.h: Nincs ilyen fájl vagy könyvtár
native/linux.cc:84: error: ‘usb’ has not been declared
native/linux.cc:131: error: ‘usb’ has not been declared
.
.
.
.
Képtelenség, hiszen ott van a szájában az include-cni könyvtár. Kipróbáltam a c++ programmal is.
$ c++ -O -Iinclude-cni -c native/linux.cc -o native/linux.o
Semmi baja nincs és a native/linux.o állomány is készen van. Akkor gcj miért nem látja - vagy miért nem adja tovább a gcc-nek - az include-cni könyvtárat és a tartalmát?
Hozzászólások
Rakj hozzá egy --verbose-t, és nézd meg, mit is hív meg és hogyan.
A c++ parancssora és a válasz:
A fordítás most is sikeres.
A gcj parancssora és a válasz:
A "COLLECT_GCC_OPTIONS=" sorból hiányzik az -Iinclude-cni. Lenyeli, de miért? A "-fbootclasspath=include-cni/" részlet mutatja ugyan, de semmit sem használ. A figyelmeztetés miatt az egészet eldobja?
Mert a java fordítójával (frontendjével) (és ha jól tudom a Javában nincs include) akarsz c-t fordítani?
Ez egy más által írt programcsomag amit tovább akarok fejleszteni. Az illető így készítette el. A gcj-t még sosem használtam. Most muszáj belekóstolnom mert java alól kell USB-s eszközöket elérni. Egyelőre PC-n próbálgatom aztán Android-2.2-re szeretném végezni a fejlesztést.
-
akkor keresd meg a gcj leírásában, hogy milyen paraméterként kell átadni a C-nek szánt include könyvtárat (a -I a mellékelt ábra szerint nem erre való).
Ez nem jó: -I valami
Ez a jó: -idirafter valami
Bíztam a szerzőben és nem kerestem ilyen jellegű hibát. Tévedtem.
Telefonra fog menni, vagy marad a PC? Mert ha telefonra, akkor ez a gcj-zés ez nekem fura.
Egyelőre annyit akarok elérni hogy meglegyen a java-USB kapcsolat. Közben botlottam bele a gcj furcsaságába. Föltételeztem hogy az eredeti szerzőnek működött a dolog és nem értettem hogy nekem miért nem. Egy táblagép lesz a cél. Természetesen oda az androidos fejlesztőkészlettel szándékozom programot készíteni. A java-USB kapcsolatot még PC-n szeretném összehozni hogy az Androidon ezzel már ne kelljen vesződni. Ha PC-n jó akkor átviszem a cél környezetbe ahol egy program kiegészítője lesz. Android-2.2-re nincs USB eszköz illesztő ezért kell kerülő megoldást választanom.
De akkor miért nem a "normális" JDK-val oldod meg, miért kínlódsz a gcj-vel?
Nem akartam a gcj-vel vesződni és nem is áll szándékomban, csak az eredeti forrást szerettem volna lefordítani úgy ahogy volt ismeretszerzési céllal. Van egy "make gcj-native" lehetőség is és itt találkoztam a problémával. Ez tulajdonképpen egy mellékszál. Azért kérdeztem meg mert nem akartam hülyén meghalni. :-)
Ahha! Ez tiszteletreméltó. Én úgy csinálnám, hogy a c fordítás részét gcc-vel, a javát gcj-vel, és átadnám a c fordítás .o-it (nem tudom, működik-e, de szerintem kéne neki).
Amúgy azt hallottam (és kicsit láttam is), a gcj-nek eléggé rozoga a Java-támogatása (gondolok itt awt, meg swing meg ilyenekre), tapasztalatom szerint még lassú is. És az openjdk megjelenésével nem is annyira hangsúlyos projekt.