Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jadawin
Anmeldungsdatum: 09.09.2024 Beiträge: 5 Wohnort: NRW, Königswinter
|
Verfasst am: 09.09.2024, 18:09 Titel: Symbol `ospeed' has different size in shared object, conside |
|
|
Hallo seit kurzem bekomme ich Fehler beim Kompilieren angezeigt
Symbol `ospeed' has different size in shared object, consider re-linking
Auf einer älteren Version von MX Linux funktionierte zwar das Compilieren, die Anwendung warf dann aber auf einem Daily Use SuSE Tumbleweed wieder zu diesem Fehler.
Hat das schon wer auf dem Schirm ?
Was wird an weitergehenden Infos benötigt ?
Vielen Dank im voraus
Jadawin |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4663 Wohnort: ~/
|
Verfasst am: 10.09.2024, 15:13 Titel: |
|
|
Ich muss da ehrlich gesagt spekulieren. Sind alle notwendigen (development-)Pakete installiert, für die korrekte Plattform (32bit vs 64bit)?
Die Internetsuche ergab bei mir ein paar vereinzelte Treffer - z. B. hier - welche die Vermutung nahe legen, dass es sich um ein Problem mit den installierten Bibliotheken handelt. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 955 Wohnort: Austria
|
Verfasst am: 13.09.2024, 12:59 Titel: |
|
|
Nachdem die Binaries mit bzw. für Debian/Ubuntu kompiliert sind nehme ich an dass es hier irgendeine Inkompatibilität zwischen openSuse und Debian gibt.
//edit: ospeed ist ein import von ncurses/libtinfo, also konkret in dieser Bibliothek
Außer der Warnung scheinen die Binaries aber problemfrei zu laufen. Wie die Warnung schon erwähnt am besten einfach neu bauen direkt vom Quellcode:
Code: |
sudo zypper install gcc make git ncurses-devel libncurses5 gpm-devel libX11-devel libXext-devel libXpm-devel libXrandr-devel libXrender-devel libtinfo5 Mesa-libGL-devel libffi-devel
BASEDIR=$PWD
wget https://users.freebasic-portal.de/stw/builds/linux64/fbc_linux64_0819_2024-06-17.zip
unzip fbc_linux64_0819_2024-06-17.zip
chmod +x fbc_linux64/bin/fbc
git clone https://github.com/freebasic/fbc.git
cd fbc
make FBC=$BASEDIR/fbc_linux64/bin/fbc
mv bin/fbc bin/fbc_first
make clean-compiler
make FBC='$BASEDIR/fbc/bin/fbc_first -i $BASEDIR/fbc/inc'
sudo make install
|
Obige Zeilen sollten reichen, habs kurz probiert unter einem openSuse Tumbleweed in WSL. Das lädt einen aktuellen build herunter, compiliert damit einmal alles, und den compiler selbst ein zweites mal mit sich selbst. Zum Schluss optional die Installation in /usr/local. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
Jadawin
Anmeldungsdatum: 09.09.2024 Beiträge: 5 Wohnort: NRW, Königswinter
|
Verfasst am: 13.09.2024, 17:26 Titel: |
|
|
Vielen Dank für die Antworten. Hat leider nicht geholfen.
Wie es scheint habe ich auch noch ein Problem mit Libncurses5 und meine Installation scheint zwischen 32 und 64Bit vermischt zu sein. Ich denke daher ich werde den Rechner bei Gelegenheit neu aufsetzen und es dann noch enmal versuchen. |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 955 Wohnort: Austria
|
Verfasst am: 14.09.2024, 10:30 Titel: |
|
|
Ich habs noch weiter untersucht und irgendwas ist da eh noch faul. Ich bekam zwar die Warnung nicht und ein einfaches Hello World funktionierte, aber was komplexeres, das auch tatsächlich ncurses verwendet hab ich nicht ausprobiert.
Hab dann interessehalber noch weitergeschaut und mir ist folgendes aufgefallen:
Code: | stw@Ubuntu:~> readelf -s fbc_linux64/bin/fbc
Symbol table '.dynsym' contains 131 entries:
Num: Value Size Type Bind Vis Ndx Name
3: 000000000086d680 2 OBJECT GLOBAL DEFAULT 24 ospeed
stw@openSuse:~> readelf -s fbc/bin/fbc
Symbol table '.dynsym' contains 121 entries:
Num: Value Size Type Bind Vis Ndx Name
120: 000000000065f798 4 OBJECT GLOBAL DEFAULT 25 ospeed @NCURSES6_TINFO_5.0.19991023 (6)
stw@openSuse:~> readelf -d fbc/bin/fbc
Dynamic section at offset 0x1e8dd8 contains 27 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libtinfo.so.6]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
stw@openSuse:~> readelf -d fbc_linux64/bin/fbc
Dynamic section at offset 0x1f6508 contains 28 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libtinfo.so.5]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
|
Aus irgendeinem Grund wird da Version 6 (libtinfo.so.6) anstatt Version 5 gelinkt wenn man fbc mit den default settings baut, wie ich oben, mit einem Version Tag "NCURSES6_TINFO_5.0.19991023" (das allerdings die einzige exportierte Version ist). Das erscheint mir nicht richtig.
Code: | stw@PC:~> readelf -W --dyn-syms /lib64/libtinfo.so.6 | grep ospeed
58: 0000000000000000 0 FUNC GLOBAL DEFAULT UND cfgetospeed@GLIBC_2.2.5 (27)
317: 000000000003a768 4 OBJECT GLOBAL DEFAULT 26 ospeed@@NCURSES6_TINFO_5.0.19991023
stw@PC:~> readelf -W --dyn-syms /lib64/libtinfo.so.5 | grep ospeed
53: 0000000000000000 0 FUNC GLOBAL DEFAULT UND cfgetospeed@GLIBC_2.2.5 (32)
80: 0000000000044524 4 OBJECT GLOBAL DEFAULT 26 ospeed@@NCURSES_TINFO_5.0.19991023
stw@PC:~> ls -la /lib64/libtinfo.*
lrwxrwxrwx 1 root root 13 Aug 26 08:27 /lib64/libtinfo.so -> libtinfo.so.6
lrwxrwxrwx 1 root root 15 Aug 26 08:27 /lib64/libtinfo.so.5 -> libtinfo.so.5.9
-rwxr-xr-x 1 root root 281632 Aug 26 08:27 /lib64/libtinfo.so.5.9
lrwxrwxrwx 1 root root 15 Aug 26 08:27 /lib64/libtinfo.so.6 -> libtinfo.so.6.5
-rwxr-xr-x 1 root root 241536 Aug 26 08:27 /lib64/libtinfo.so.6.5 |
Einen konkrete Idee was genau das Problem ist (oder gar einen Lösungsvorschlag) hab ich aber leider zum aktuellen Zeitpunkt nicht. Was mich jedoch wundert ist, dass es bei dir auch mit der selbst kompilierten Version diese Warnung anzeigt. Da wär interessant was Code: | readelf -W --version-info --dyn-syms | über deinen fbc bzw. deine applikation ausspuckt. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Zuletzt bearbeitet von St_W am 15.09.2024, 20:25, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Jadawin
Anmeldungsdatum: 09.09.2024 Beiträge: 5 Wohnort: NRW, Königswinter
|
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 955 Wohnort: Austria
|
Verfasst am: 15.09.2024, 18:29 Titel: |
|
|
Hab mir jetzt noch die verschiedenen "offiziellen" FB builds für Linux angeschaut und der ubuntu22 build linkt da auch schon ncurses6, die restlichen noch ncurses5. Soweit ich gesehen hab ist bei aktuellen Ubuntu und kommenden Debian Versionen (trixie) auch kein ncurses5 mehr verfügbar. Da wie gesagt der Ubuntu22 build schon v6 linkt müsste das für openSuse genauso OK sein. Ist wohl API kompatibel, nur nich ABI kompatibel.
Die Größe von "ospeed" schaut in deinem Dump eigentlich korrekt aus (4 Bytes). Bei den alten ncurses5 builds war das Feld offenbar nur 2 Bytes groß üblicherweise. Warum du trotzdem die Warnung bekommst versteh ich nicht - bist du sicher dass du mit obigen schritten compilierte fbc binary und insbesondere die dazugehörige ebenfalls neu compilierte libfb.a (bzw. dessen mt/pic variante) verwendest und nicht etwa eine alte version noch im PATH bzw. im Linker search path liegt? Und du auch dein Programm mit dem neuen fbc compiliert und die neue runtime lib gelinkt hast? _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
Jadawin
Anmeldungsdatum: 09.09.2024 Beiträge: 5 Wohnort: NRW, Königswinter
|
Verfasst am: 15.09.2024, 18:37 Titel: |
|
|
Hm nein, natürlich nicht. Ich hatte auf MXLinux compiliert, da wird er die 5er noch abgegriffen haben. Unter SuSE funzte das compilieren nicht wegen der osspeed Meldung.
Verstehe ich Dich richtig, dass es eventuell nur noch ein wenig Zeit braucht bis entsprechende Updates kommen müssten? |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 955 Wohnort: Austria
|
Verfasst am: 15.09.2024, 18:55 Titel: |
|
|
Aso, bei meinem openSuse hat er zwar diese Warnung rausgeschrieben, aber das Programm (und auch das compilieren vom gesamten fbc compiler) hat trotzdem anstandslos funktioniert, dachte das wär bei dir auch so. (was ich grundsätzlich nachvollziehen kann, da die ncurses funktionalität hierbei nicht genutzt wird).
Hier mein Build, der müsste eigentlich bei deinem openSuse auch funktionieren:
https://users.freebasic-portal.de/stw/builds/_manual/fbc_openSuse_2024-06-17.tar.gz
Die unterschiedliche size von ospeed scheint übrigens nur ein Distro Unterschied zu sein, nicht abhängig von der ncurses Version:
Ubuntu: Code: |
#define NCURSES_OSPEED short
extern NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed;
|
openSuse: Code: |
typedef unsigned int speed_t; // in /usr/include/bits/termios.h
#define NCURSES_OSPEED speed_t
extern NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed; |
//edit:
Jadawin hat Folgendes geschrieben: | Verstehe ich Dich richtig, dass es eventuell nur noch ein wenig Zeit braucht bis entsprechende Updates kommen müssten? | Mit obiger Erkenntnis, dass es eine Inkompatibilität zwischen den Distros (und nicht wie zuerst angenommen zwischen ncurses 5/6) ist, nein. Da ist das Problem "nur" dass es keine offiziellen FreeBasic binaries für openSuse gibt und die Debian/Ubuntu binaries wegen der unterschiedlichen definition von ospeed nicht ganz kompatibel sind. Einzige Lösung bleibt selbst von den sourcen compilieren solang es keine offiziellen openSUSE binaries für FB gibt.
Es gibt dafür übrigens auch "bootstrap" sources (zu C vorkompiliert), sodass du initial keinen funktionierenden FBC (sondern nur GCC) auf deinem zielsystem brauchst und nicht kompliziert cross-compilen musst. siehe https://sourceforge.net/projects/fbc/files/FreeBASIC-1.10.1/Source/
(wenn meinen binaries oben nicht traust und selbst kompilieren willst) _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Zuletzt bearbeitet von St_W am 15.09.2024, 19:02, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Jadawin
Anmeldungsdatum: 09.09.2024 Beiträge: 5 Wohnort: NRW, Königswinter
|
Verfasst am: 15.09.2024, 19:01 Titel: |
|
|
Vielen Vielen lieben Dank.... Dein Build funktioniert!
Super Klasse. Danke für die Zeit, die Du in mein Problem investiert hast!
[Problem solved] |
|
Nach oben |
|
|
|