#1 Le 27/08/2010, à 14:30
- Efhache84
cross compiler une librairie avec configure make make install
salut à tous,
j'aimerais cross-compiller une librairie téléchargée (https://launchpad.net/libmodbus/trunk/2.0.3)
cross compiler depuis ma ubuntu vers une processeur arm.
Je peux le faire depuis un programme que j'ai pondu moi même, grâce à une modification du path puis en utilisant le bon compîlateur.
Par contre lorsque je veux compiler la librairie ci-dessus je dois utiliser configure, make, make install
bon dans le cas d'une cross compilation, je présume que je dois modifier qqch dans le configure, mais quoi? qqch du genre pour lui dire utiliser arm-linux-gcc au lieu de gcc
Le make à priori pas de changement il exécutera ce qui résulte de configure
et le make install, là par contre, dois-je le faire? sur ma machien hôte ça n'a pas de sens, non?
EDIT : l'option host semble suffire en réalité... par contre le make déconne par la suite... encore de l'apprentissage linux à faire
Dernière modification par Efhache84 (Le 27/08/2010, à 14:45)
Aspire 5633 WLMi - Lucid Lynx 10.04 en 64 bits
Hors ligne
#2 Le 27/08/2010, à 15:01
- eiger
Re : cross compiler une librairie avec configure make make install
Ce n'est pas le "host" que tu dois spécifier mais le "target".
./configure --target=arm-linux
Hors ligne
#3 Le 30/08/2010, à 15:04
- Efhache84
Re : cross compiler une librairie avec configure make make install
je veux bien, mais lorsque je regarde le help du configure, je vois pourtant ceci :
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
l'option host semble donc bien avoir pour but de faire tourner la librairie sur un autre système que celui sur lequel je compile.
Et lorsque j'utilise target, j'obtiens un fichier de type i386 là où l'option host me fournit un type arm (commande file)
Par contre dans le dernier cas, lorsque je veux compiler mon soft, j'obtiens une erreur de link :
/home/user/ARMLinux/buildroot/build_arm/staging_dir/lib/gcc/arm-linux-uclibc/4.1.2/../../../../arm-linux-uclibc/lib/libmodbus.so: undefined reference to `rpl_malloc'
Aspire 5633 WLMi - Lucid Lynx 10.04 en 64 bits
Hors ligne
#4 Le 31/08/2010, à 01:17
- eiger
Re : cross compiler une librairie avec configure make make install
Oh là, je n'avais pas les yeux en face des trous moi.
Désolé, j'avais lu ton message de travers.
L'option host est la bonne.
Pour ton erreur, tu peux essayer ceci:
export ac_cv_func_malloc_0_nonnull=yes
./configure --host=arm-linux
make
Ou encore tu peux supprimer la ligne AC_FUNC_MALLOC de configure.ac avant de lancer le configure.
Note : dans la version 2.1.O, le test sur malloc a été retiré, ça ne devrait plus poser de problème.
La macro AC_FUNC_MALLOC s'attend à trouver un système avec une GLIBC, où malloc est redéfini en rpl_malloc. Comme on utilise souvent d'autres libc en embarqué, ce test pose souvent problème.
Dernière modification par eiger (Le 31/08/2010, à 01:18)
Hors ligne
#5 Le 31/08/2010, à 09:35
- Efhache84
Re : cross compiler une librairie avec configure make make install
bête quesiton mais en forçant la variable avec malloc, puis en faisait le configure, cette variable ne risque-t-elle pas d'être réassignée ?
parceque si dans le configure un test fait que var=1, le fait de faire
var=0
configure
revient finalment au même à
Var=0
...
var=1
non ?
EDIT : ok merci on ça compile sans plus d'erreur , reste plus qu'à terminer le soft pour le tester
Dernière modification par Efhache84 (Le 31/08/2010, à 09:39)
Aspire 5633 WLMi - Lucid Lynx 10.04 en 64 bits
Hors ligne
#6 Le 22/03/2011, à 17:25
- jeremy02700
Re : cross compiler une librairie avec configure make make install
Bonjour,
Je dispose d' Ubuntu 10.10 et je souhaite cross-compiler la librairie libmodbus 2.9.3 pour cible ARM (samsung s3c2440 / mini2440 board) sur laquelle est installé emDebian. Je dispose également du cross-compilateur pour arm "arm-none-linux-gnueabi-".
Ma question est de savoir si la procédure suivante est correcte :
./configure --host arm-linux
make
make install
Cependant, les variables CC, CFLAGS, CXXFLAGS, ... doivent-elles faire l'objet d'une initialisation particulière ?
En vous remerçiant !!
Jérémy
Hors ligne