Du bist nicht eingeloggt! Möglicherweise kannst du deswegen nicht alles sehen.
  (Noch kein mods.de-Account? / Passwort vergessen?)
Zur Übersichtsseite
Hallo anonymer User.
Bitte logge dich ein
oder registriere dich!
 Moderiert von: mercury, Schalentier


 Thema: 100 gute Gründe für Linux ( v0.29 - wie lang das wohl noch gutgeht? )
« erste « vorherige 1 ... 95 96 97 98 [99] 100 nächste » letzte »
erste ungelesene Seite | letzter Beitrag 
Traxer

Mod GSG9
 
Zitat von Oli

Wäre ja ziemlich umständlich, wenn ich all die Unterordner in /usr/lib/ zum LD_LIBRARY_PATH hinzufügen müsste.


das machen und müssen die auch nicht, weil a) linux und viele andere unix systeme einen run-time dynamic linker kennen und der hat die unglaubliche fähigkeit rekursiv durch verzeichnisse gehen zu können (nebenbei cached der das auch) und b) weil die programme in ihren start scripts nur den entsprechenden pfad für ihre persönlichen libs hinzufügen.

natürlich kann man auch den pfad statisch mit darein schmeissen, allerdings ist das nicht immer so ganz empfehlenswert.

in deinem readelf output da oben, steht übrigens, dass die lib via dem rtdl system gesucht und geladen werden soll. da steht nämlich kein expliziter pfad drin.

was du eigentlich wissen willst ist, wo das system die datei sucht und wie die gesuchten dynamischen objekte, die dein programm laden will, heissen. das machst du mit ldd, welche dazu den dynamischen linker (ld.so) befragt.


/e (fake)
https://www.youtube.com/watch?v=69V__a49xtw
25.02.2014 18:48:10  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Ratatoskr

Arctic
Das was du suchst, nennt sich runtime path. -Wl,-rpath=dir siehe man ld. Das bezieht sich dann nur auf das eine Programm. Alle anderen finden die Bibliothek trotzdem nicht.
25.02.2014 18:52:01  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
flying sheep

AUP flying sheep 04.12.2011
mit LD_PRELOAD lässt sich auch wunderbar “kopierschutz” aushebeln, weil du damit quasi alles, was dynamisch verlinkt ist, ersetzen kannst.

ein paar findige menschen haben z.b. dropbox dazu gebracht, seinen eigenen sourcecode zu dumpen

PS: ich begreife die C/C++-konvention nicht,
Typ *varname = ...
zu schreiben. „*“ ist doch teil des typs!
char *box
bedeutet doch nicht „box-zeiger ist ein char“, sondern „box ist ein char-zeiger“.
25.02.2014 19:32:59  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Doch, es bedeutet ersteres peinlich/erstaunt

char *name, buchstabe;
25.02.2014 19:47:41  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
flying sheep

AUP flying sheep 04.12.2011
 
Zitat von csde_rats

Doch, es bedeutet ersteres peinlich/erstaunt

char *name, buchstabe;

finde ich nicht. ich finde, dass diese initialisierung eine andere semantik haben sollte und komisch ist.

man hat später schließlich keine variable mit dem bezeichner
*name
, sondern nur
name
, und diese variable enthält einen wert vom typ
char*
. variablen in C sind boxen. sie enthalten ein ding mit einer bestimmten größe. und
name
enthält halt einen
char*
25.02.2014 21:49:21  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Da hast du recht, ich bin mir aber nicht sicher, ob du hier nicht gerade Qualifiers (const, static, ...) und Declarators (&, *, []) durcheinander bringst. Ein Qualifier modifiziert quasi den Datentyp, während ein Declarator nur die aktuell deklarierte Entität betrifft.
25.02.2014 22:29:30  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
 
Zitat von Ratatoskr

Das was du suchst, nennt sich runtime path. -Wl,-rpath=dir siehe man ld. Das bezieht sich dann nur auf das eine Programm. Alle anderen finden die Bibliothek trotzdem nicht.

Jo, das ist doch genau das, was ich schrieb. traurig
25.02.2014 23:44:57  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
teK

tek
With PHP I could write a fully working SSH server in only 3 days.

 

Ich finde, die könnten vim in systemd integrieren.



Schlechter Troll, würde nicht füttern.
26.02.2014 1:15:17  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
flying sheep

AUP flying sheep 04.12.2011
26.02.2014 1:51:20  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
teK

tek
Ernsthaft?

Ich finde den tenären Operator übrigens klasse.
26.02.2014 7:42:00  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
ShinyDoofy

Shiny doofy
Aber doch bitte nicht linksassoziativ.
Ich reg mich über PHP nicht mehr auf. Wer's nutzen möchte, bitte, soll er.

Portal2 ist übrigens als Beta nativ auf Linux erschienen. Crasht bei mir in <4 Sekunden kommentarlos nach Start des Singleplayers. Hach, das wird bestimmt noch
26.02.2014 8:36:57  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
 
Zitat von teK

 

Ich finde, die könnten vim in systemd integrieren.



Schlechter Troll, würde nicht füttern.

Das war gegen systemd getrollt, bezogen auf diesen total überflüssigen networkd. Sei nicht immer so unfreundlich zu mir. :-(

--

Traxer: hast du irgendwelche Links/Hintergrundinfos zu dem rekursiven /usr/lib Suchen und dem Cache? Das interessiert mich, ich muss dringend mal ein bisschen Wissen über's Linken und so weiter sammeln.

Ordentliche ld tutorials, die nicht nur aus man pages bestehen, sind auch willkommen.
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von Oli am 26.02.2014 9:50]
26.02.2014 8:40:03  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Okay, rpath Beispiel: https://dl.dropboxusercontent.com/u/83450/rpath.zip

Wie kriege ich es hin, dass das Beispiel funktioniert (d.h., er erfolgreich linkt), ohne, dass ich die main.o expilizit gegen libfoo.so linken muss?

Ich will also, dass meine Executable von libbar abhängt und libbar von libfoo.

---

 
Hello Oli,

We would like to thank you for the participation in our C++ IDE survey. Unfortunately our first private preview as we see from the information that you have kindly provided won’t work well in your environment (build system, compiler, debugger or libraries used are not supported yet). We kindly ask you to be patient and to wait for later builds with better support for your project.


[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Oli am 26.02.2014 10:51]
26.02.2014 10:06:03  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
hoschi

hoschi
 
Zitat von flying sheep

PS: ich begreife die C/C++-konvention nicht,
Typ *varname = ...
zu schreiben. „*“ ist doch teil des typs!
char *box
bedeutet doch nicht „box-zeiger ist ein char“, sondern „box ist ein char-zeiger“.



Vorab Begriffsdefinition, wie von rats schon angedeutet:
Specificator: primitive Typen (char, int, double), class, enum und Qualifier wie const
Declarator: Identifier (Bezeichner) und Operatoren (*, &, [] usw.)


In der Sprache C sind Deklartionen aus Basistyp und Deklartor(en) aufgebaut. Ein Deklarator legt den Variablennamen fest und leitet den zusammengesetzten Typ vom Basistyp ab. Also ist int ein Basistyp und der Deklarator besteht aus * oder & und Variablennamen.
In diesem Sinn kann man vom Basistyp int Variablen mit unterschiedlichen Namen und unterschiedlichen zusammengesetzten Typen ableiten (primitiver Typ, Zeiger, Referenz).


 
Code:
// C-Style
#include <iostream>
using namespace std;

int main() {
	// reference must be initalized
	int ivar, *iptr, &iref = ivar;
	return 0;
}


Der Erfinder von C++, Bjarne Stroustrup, bevorzugt eine anderen Notationsstil um die logische Semantik des Typs zu betonen. Der Teil des Deklarators, welcher die Ableitung des zusammengesetzten Typs bestimmt, wird bei Stroustrup beim Basistyp notiert und nicht beim Variablennamen. Ich finde das logisch und leichter lesbar.

Problem dabei ist aber, dass der Syntax von C vorgibt, dass die Ableitung und der Variablennamen zusammen den Deklarator bilden.

Warnung: Ein Deklartor gilt nur fuer eine Variable!

 
Code:
// C++-Style
#include <iostream>
using namespace std;

int main() {
	int ivar;
        int* iptr;
        int &iref = ivar;
        // dangerous, because misleading
        // int* iptr, i_am_not_a_pointer;
	return 0;
}


Empfehlung:
Bleib bei eine Schreibweise. Wenn du die C++-Schreibweise anwendest, deklariere genau eine Variable in einem Statement, wenn ein zusammengesetzter Typ angewendet wird.
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von hoschi am 26.02.2014 15:48]
26.02.2014 14:57:34  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Ratatoskr

Arctic
 
Zitat von Oli

Okay, rpath Beispiel: https://dl.dropboxusercontent.com/u/83450/rpath.zip

Wie kriege ich es hin, dass das Beispiel funktioniert (d.h., er erfolgreich linkt), ohne, dass ich die main.o expilizit gegen libfoo.so linken muss?

Ich will also, dass meine Executable von libbar abhängt und libbar von libfoo.



Das Problem ist $ORIGIN. ld, der statische Linker, die Endstufe beim Kompilieren, expandiert $ORIGIN nicht. ld.so, der dynamische Linker, der dynamische Bibliotheken in den Speicher läd, versteht $ORIGIN. Du musst ld extra mit einem relativen Pfad füttern oder libfoo.so anderweitig auffindbar machen (LD_LIBRARY_PATH). Konkret auf dein Beispiel bezogen, heißt das:

 
Code:
g++ -o run/main.run obj/main.o -Wl,-rpath='$ORIGIN/../lib',-rpath-link=lib -Llib -lbar


oder:
 
Code:
...
g++ -shared -o lib/libbar.so obj/bar.o -Wl,-rpath='$ORIGIN',-rpath=lib -Llib -lfoo
...
g++ -o run/main.run obj/main.o -Wl,-rpath='$ORIGIN/../lib' -Llib -lbar


Letzteres hat allerdings den für ld.so sinnlosen lib Eintrag im RPATH von libbar.so, stört aber keinen.
26.02.2014 14:58:18  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Aha. Besten Dank! Man würde ja denken, sowas würde von cmake automatisch und immer richtig übernommen...
26.02.2014 15:12:29  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
flying sheep

AUP flying sheep 04.12.2011
 
Zitat von hoschi
int* iptr, i_am_not_a_pointer;

jo, genau dieser teil des sprachdesigns ist eben imho blödsinn. würden man pro statement nur deklarationen mit grundtyp und einem dazugehörigen satz deklaratoren machen dürfen, also wäre die semantik so:

 
Code:
int** iptrptr, iptrptr2;

gäbe es weder fallstrick noch müssten wir unintuitive syntax nutzen (die existiert um auf diesen fallstrick hinzuweisen)
26.02.2014 15:24:55  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
hoschi

hoschi
Bedanke darfst du dich bei K&R :-)
26.02.2014 15:53:55  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
FreeHawk*

AUP FreeHawk* 31.10.2010
Gibts iwo n günstigen arm soc mit mehreren sata slots? Würd mir gerne n nas basteln
26.02.2014 16:35:03  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
teK

tek
 
Zitat von Oli

Traxer: hast du irgendwelche Links/Hintergrundinfos zu dem rekursiven /usr/lib Suchen und dem Cache? Das interessiert mich, ich muss dringend mal ein bisschen Wissen über's Linken und so weiter sammeln.



Nachdem ich so unfreundlich war, jetzt wieder ein freundlicher Hinweis: mach doch Mal: sudo ldconfig -p.
26.02.2014 17:01:40  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Ah, verstehe. Das bedeutet, in /etc/ld.so.conf kann ich weitere Verzeichnisse angeben. Aber ich glaube, automatisch wird da unterhalb von /usr/lib nichts gefunden. (sonst wäre ich ja nciht auf den eingangs beschriebenen Fehler gestoßen).

/etc/ld.so.cache beinhaltet diesen Cache.
26.02.2014 17:09:55  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Traxer

Mod GSG9
 
Zitat von Oli

Wie kriege ich es hin, dass das Beispiel funktioniert (d.h., er erfolgreich linkt), ohne, dass ich die main.o expilizit gegen libfoo.so linken muss?


generell, wenn du nicht statisch linken willst und keine direkte dependency willst, dann ist der weg dlopen.

andernfalls, nicht statisch und nicht manuell, dann bleibt dir nur der weg über den rtdl.
26.02.2014 19:41:46  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
theromi

AUP theromi 02.06.2020
http://atom.io/

 
Whether you're tweaking the look of Atom's interface with CSS or adding major features with HTML and JavaScript


Ja, naja.. Mh, eher nicht?

 
Node.js integration


k thx bye

/e: Sieht irgendwie exakt aus wie Sublime Breites Grinsen
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von theromi am 27.02.2014 0:11]
27.02.2014 0:07:34  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
flying sheep

AUP flying sheep 04.12.2011
 
Zitat von theromi
 
Node.js integration


k thx bye

Mata halt...
27.02.2014 1:24:09  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
teK

tek
Zur Erinnerung, ich glaube, es ging um einen Texteditor.
27.02.2014 1:30:26  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[KdM]MrDeath

mrdeath2
https://bugzilla.cyrusimap.org/show_bug.cgi?id=3269#c3

wird denke ich zeit von cyrus auch mal wegzumigrieren... das spamt mir grade mein log sowas von voll und kanns doch nach der langen zeit nicht wirklich sein :/
27.02.2014 1:58:55  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
flying sheep

AUP flying sheep 04.12.2011
 
Zitat von teK

Zur Erinnerung, ich glaube, es ging um einen Texteditor.

…ja?
27.02.2014 2:17:30  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
SwissBushIndian

AUP SwissBushIndian 07.11.2011
Wofür braucht der ein Server Socket Backend?
27.02.2014 7:39:49  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
 
Zitat von SwissBushIndian

Wofür braucht der ein Server Socket Backend?


Es ist gar nicht so doof, einen Editor als Server-Client app aufzubauen; Tun doch viele Programme. Außerdem ist der Kram, den die Leute von Github sonst so produzieren, eigentlich qualitativ ganz ok. Ich werde es nachher mal testen; Wenn ich mit HTML und CSS Kenntnissen das Ding leicht erweitern kann, wäre das schonmal ein Vorteil.

/e: Ach, ist noch nicht öffentlich.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Oli am 27.02.2014 8:14]
27.02.2014 8:13:44  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
audax

AUP audax 03.12.2007
Emacs kann auch als Server laufen, ist sogar gar nicht unüblich. Ich bau mir auch gleich mein Emacs als System.d user service Breites Grinsen
27.02.2014 8:28:57  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: 100 gute Gründe für Linux ( v0.29 - wie lang das wohl noch gutgeht? )
« erste « vorherige 1 ... 95 96 97 98 [99] 100 nächste » letzte »

mods.de - Forum » Linux » 

Hop to:  

Mod-Aktionen:
27.02.2014 19:47:42 teK hat diesen Thread geschlossen.

| tech | impressum