Avatar billede pardot Nybegynder
09. januar 2013 - 15:29 Der er 7 kommentarer og
1 løsning

Implementering af tredie parts bibliotek på SuSE 10.0 platform

Jeg er helt ny mht. linux og makefiler.
Jeg skal have implementert et tredie parts bibliotek på vores SuSE 10.0 platform. Vi benytter GCC (version 3.4.3) kompiler til en power PC
Når jeg kompiler/linker for jeg følgende fejl:
"/opt/amltd/powerpc-linux/gcc-3.4.3-glibc-2.3.5/lib/gcc/powerpc-linux/3.4.3/../../../../powerpc-linux/bin/ld: lib/UniKey.a(UniKey.o): Relocations in generic ELF (EM: 3)
lib/UniKey.a: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [pay_pr_shot.debug] Error 1"

Jeg har søgt hjælp hos leverandøren af bibliotekket. Svaret fra leverandøren er
Hi,

The lib has been fully tested under Ubuntu and Fedra. The "Relocations in generic ELF (EM: 3)" error may be caused by that you've set your makefile up to link with the new g++ but you haven't changed the compiler you're using to build the objects in the first place.

The easiest way to fix this is to set environment CXX to the next compiler, i.e.

export CXX=...
or just set it for a given make by adding CXX=... to the command line.

You'll need to make clean first but you'll then use the correct compiler for both the compile and link.

You could also specify a new how-to-compile-C++ files rule in your makefile to specify the new compiler but the environment variable is easier:

.cc.o:
/home/.../g++ $(CPPFLAGS) $(CXXFLAGS) -c

Det jeg har udledt af svaret er at bibliotekket er bygget med en g++ kompiler.

Et uddrag af vores makefile
CC="/opt/amltd/bin/powerpc-linux-gcc"
OBJCOPY="/opt/amltd/bin/powerpc-linux-objcopy"
#CC="gcc"
#echo temporary compiler
C_FLAGS="-Wall -O2 -Iinclude"
LD="/opt/amltd/bin/powerpc-linux-gcc"
#LD="gcc"
#echo temporary linker
L_FLAGS="-Wall -O2 -Wl,-cref -Wl,-Map -Wl,application.map"

Spørgsmål:
1. Har jeg forstået det rigtigt, at årsagen til fejlen er, at vi benytter en GCC kompiler og bibliotekket er bygget med en g++ kompiler?

2. Hvad skal jeg ændre i makefilen for at få det til at virke ?
Avatar billede Andershoegh Seniormester
09. januar 2013 - 17:19 #1
Jeg har ingen løsning, kun et forslag:

Har selv haft openSUSE i knap 10 år, så jeg vil mene, at dine chancer for at få et svar er meget større her i dette forum.

http://www.linuxin.dk/

Det kan du evt prøve, hvis du ingen løsning finder her på Eksperten.

eller lægge dit spørgsmål under styresystemer-workstation- linux-openSUSE.
Avatar billede Andershoegh Seniormester
09. januar 2013 - 17:34 #2
Desuden undrer det at høre om openSUSE 10,0.  Den er da vist ca 5-6 år gammel

i dag hedder det da 12,2
Avatar billede arne_v Ekspert
10. januar 2013 - 00:24 #3
Bygger du paa en SUSE/Power til en SUSE/Power
eller bygger du paa en SUSE/x86 til SUSE/Power?
Avatar billede arne_v Ekspert
10. januar 2013 - 00:25 #4
Det var naerliggende at proeve at indsaette:


.cc.o:
/home/.../g++ $(CPPFLAGS) $(CXXFLAGS) -c
Avatar billede arne_v Ekspert
10. januar 2013 - 00:26 #5
og g++ er en del af GCC, saa det er ihvertfald ikke problemet
Avatar billede pardot Nybegynder
10. januar 2013 - 09:33 #6
Jeg bygger på en SuSE/x86 til en SuSE/Power
Avatar billede pardot Nybegynder
11. januar 2013 - 10:01 #7
Tak for inputene.
Efter at have gået leverandøren lidt på klinken viste det sig at bibliotekket ikke er bygget til PowerPC
Avatar billede arne_v Ekspert
12. januar 2013 - 01:54 #8
Saa er det jo ikke saa overraskende at der er problemer.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester