framework JavaVM pas trouvé par ld

lufermapar

Membre enregistré
22 Novembre 2005
2
0
bonjour à tous,

je dois compilé un prog en C++, avec des librairies java qui ont jni-isées (ces libraries existent déjà, ce n'est pas le propos ici, je crois). Dans mon Makefile, une des lignes est la suivante :
Bloc de code:
-L${AIDAJNI_HOME}/lib/Darwin-g++ -lAIDAJNI -lFHJNI -framework JavaVM

Le resultat de la compilation est :

Bloc de code:
/usr/bin/ld: can't locate framework for: -framework JavaVM
collect2: ld returned 1 exit status

en regardant dans le man de ld, il est dit que :
-framework name[,suffix]
Specifies a framework to link against. Frameworks are dynamic
shared libraries, but they are stored in different locations,
and therefore must be searched for differently. When this option
is specified, ld searches for framework `name.framework/name'
Or, c'est tout à fait ma configuration. j'ai bien une librairie JavaVM dans le repertoire JavaVM.framework (un lien symbolique pour être exact.)

Je tourne en rond depuis des heures ... changé le lien symbolique par la librairie pointé en dur, mettre une option -F avec le repertoire pointant sur JavaVM ... rien y a fait...

bref, je suis perdu ...
Pour completer un peu, ma config est macosX 10.4, gcc4.0.1, java1.4.2.09...

qqu'un peut-il me donner un coup de pouce (pousse) ?

merci:zen:
 
Bonjour,
tu nous a donné le bout de makefile, mais quelle est la ligne de compilation générée par ce makefile ?
 
Rebonjour,
je crois que je viens de trouver un début de réponse.

Un peu plus haut dans le Makefile, j'ai rajouté le flag suivant.
Bloc de code:
LDFLAGS += -Z

Cela me permettait d'éviter des conflits dans la bibliothèque Xm ( apparemment, la version X11 livrée avec Tiger est compilée avec gcc3.3 et perso, je compile en gcc4). Cela me permettait de pointer sur mes propres librairies Xm compilé avec gcc4.

Donc, je pense que si je vire le flag en question, le problème devrait se résoudre...j'espère ;-)
Ce que je ne comprends pas, c'est pourquoi en passant l'option -F/chemin/vers/la/machine/virtuelle à ld, cela n'a pas marché...

pour info, je refile le makefile
Bloc de code:
name := exGPS
G4TARGET := $(name)
G4EXLIB := true

ifndef G4INSTALL
  G4INSTALL = ../../..
endif

.PHONY: all
all: lib bin

include $(G4INSTALL)/config/binmake.gmk

G4VIS_BUILD_OPENGLX_DRIVER = 0
G4VIS_USE_OPENGLX = 0
#LDFLAGS += -static
#### modif lud
LDFLAGS += -Z
#####
#ifdef G4ANALYSIS_USE
   CPPFLAGS += `aida-config --include`
   LDLIBS += `aida-config --lib`
#endif

bonne journée