


Probleme und Lösungen zu Zeichenkonflikten unter Linux
In diesem Artikel werden hauptsächlich relevante Informationen zur Lösung des Problems widersprüchlicher Symbole mit demselben Namen unter Linux vorgestellt. Freunde, die sie benötigen, können sich auf
Lösung für das Problem widersprüchlicher Symbole mit dem beziehen Gleicher Name unter Linux
Ich bin kürzlich bei der Arbeit auf das folgende lästige Problem gestoßen:
Unter Linux gibt es drei Module aa, bb und cc. Die Grundsituation ist wie folgt:
cc Kompilieren und verbinden, um eine dynamische Bibliothek zu erhalten. Es gibt die folgenden Schnittstellen in cc:
cc_fun { …… do();//调用名为do的cc模块内部函数 …… }
bb kompilieren und verbinden, um bb.a statische-Bibliothek zu erhalten. Es gibt die folgenden Schnittstellen in bb:
bb_fun { …… handle = dlopen(cc.so, RTLD_LAZY);//加载cc.so pccfun = dlsym(handle, “cc_fun”);//获取cc_fun函数指针 (*pccfun)();//调用cc_fun函数,此时应该会调用cc模块中的do()函数 do();//调用名为do的bb模块内部函数(与cc模块中的do()函数同名,实现却不相同) …… }
aa Nach der Kompilierung eine Verbindung herstellen bb.a ruft über die Link-Option -lbb das ausführbare aa-Programm ab und ruft die Schnittstellenfunktion bb_fun() von bb.a auf:
main { …… bb_fun();//调用bb_fun函数 …… }
Während der Arbeit Es wurde festgestellt, dass sich aa zur Laufzeit ungewöhnlich verhält und es immer zu Speicherverlusten und Funktionsstörungen kommt. Es wurde festgestellt, dass sich das Problem auf die gleichnamige Funktion do() konzentriert. Beim Drucken der Ausgabe wurde festgestellt, dass die beiden Aufrufe der Funktion do () im Programm beide die Funktion do () im Modul bb aufriefen, während die Funktion do () im Modul cc nie aufgerufen wurde, was zu einer Abnormalität führte Programmverhalten und Speicherlecks. Nach mehreren Überprüfungen habe ich erfahren, dass die Symboltabellen in jeder Bibliothek im Linux-Programm schließlich in die globale Symboltabelle geladen werden, in der sich das Programm zu diesem Zeitpunkt befindet, wenn es ein Symbol mit dem gibt Bei gleichem Namen kann nur das zuerst geladene Symbol aufgerufen werden, d. h. später geladene Symbole mit demselben Namen werden durch die vorherigen überschrieben. Die Funktion do() im cc-Modul wird durch die Funktion do() im bb-Modul überschrieben und kann daher nicht aufgerufen werden.
Kein Unsinn mehr. . .
Nachdem Sie viele unbefriedigende Methoden ausprobiert haben, lautet die endgültige Lösung wie folgt:1. Fügen Sie -Wl, -Bsymbolic -Wl zum cc-Makefile hinzu -script, die Verbindungsoption der Version, bedeutet, das Skript in der Versionsdatei zu verwenden, um anzugeben, welche Funktionen exportiert werden.
2.version-Datei wird wie folgt implementiert:
VERS{ global: cc_fun; local: *; };
Speichern Sie die Datei in dem Verzeichnis, in dem sich das Makefile befindet.
3. Kompilieren und verbinden Sie die drei Module und das Problem ist gelöst.
Das obige ist der detaillierte Inhalt vonProbleme und Lösungen zu Zeichenkonflikten unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Deepseek ist ein leistungsstarkes Intelligent -Such- und Analyse -Tool, das zwei Zugriffsmethoden bietet: Webversion und offizielle Website. Die Webversion ist bequem und effizient und kann ohne Installation verwendet werden. Unabhängig davon, ob Einzelpersonen oder Unternehmensnutzer, können sie massive Daten über Deepseek problemlos erhalten und analysieren, um die Arbeitseffizienz zu verbessern, die Entscheidungsfindung zu unterstützen und Innovationen zu fördern.

Es gibt viele Möglichkeiten, Deepseek zu installieren, einschließlich: kompilieren Sie von Quelle (für erfahrene Entwickler) mit vorberechtigten Paketen (für Windows -Benutzer) mit Docker -Containern (für bequem am besten, um die Kompatibilität nicht zu sorgen), unabhängig von der Methode, die Sie auswählen, bitte lesen Die offiziellen Dokumente vorbereiten sie sorgfältig und bereiten sie voll und ganz vor, um unnötige Schwierigkeiten zu vermeiden.

Bitget ist eine Kryptowährungsbörse, die eine Vielzahl von Handelsdienstleistungen anbietet, darunter Spot -Handel, Vertragshandel und Derivate. Der 2018 gegründete Austausch hat seinen Hauptsitz in Singapur und verpflichtet sich, den Benutzern eine sichere und zuverlässige Handelsplattform zu bieten. Bitget bietet eine Vielzahl von Handelspaaren, einschließlich BTC/USDT, ETH/USDT und XRP/USDT. Darüber hinaus hat der Austausch einen Ruf für Sicherheit und Liquidität und bietet eine Vielzahl von Funktionen wie Premium -Bestellarten, gehebelter Handel und Kundenunterstützung rund um die Uhr.

Ouyi Okx, die weltweit führende digitale Asset Exchange, hat jetzt ein offizielles Installationspaket gestartet, um ein sicheres und bequemes Handelserlebnis zu bieten. Auf das OKX -Installationspaket von Ouyi muss nicht über einen Browser zugegriffen werden. Der Installationsprozess ist einfach und einfach zu verstehen.

Gate.io ist ein beliebter Kryptowährungsaustausch, den Benutzer verwenden können, indem sie sein Installationspaket herunterladen und auf ihren Geräten installieren. Die Schritte zum Abholen des Installationspakets sind wie folgt: Besuchen Sie die offizielle Website von Gate.io, klicken Sie auf "Download", wählen Sie das entsprechende Betriebssystem (Windows, Mac oder Linux) und laden Sie das Installationspaket auf Ihren Computer herunter. Es wird empfohlen, die Antiviren -Software oder -Firewall während der Installation vorübergehend zu deaktivieren, um eine reibungslose Installation zu gewährleisten. Nach Abschluss muss der Benutzer ein Gate.io -Konto erstellen, um es zu verwenden.

Ouyi, auch bekannt als OKX, ist eine weltweit führende Kryptowährungsplattform. Der Artikel enthält ein Download -Portal für das offizielle Installationspaket von Ouyi, mit dem Benutzer den Ouyi -Client auf verschiedenen Geräten installiert werden können. Dieses Installationspaket unterstützt Windows, Mac, Android und iOS -Systeme. Nach Abschluss der Installation können sich Benutzer registrieren oder sich beim Ouyi -Konto anmelden, Kryptowährungen mit dem Handel mit den von der Plattform erbrachten Diensten anmelden.

Gate.io ist eine hochgelobte Kryptowährungshandelsplattform, die für ihre umfangreiche Token-Auswahl, niedrige Transaktionsgebühren und eine benutzerfreundliche Schnittstelle bekannt ist. Mit seinen fortschrittlichen Sicherheitsfunktionen und dem hervorragenden Kundenservice bietet Gate.io Händlern ein zuverlässiges und bequemes Handelsumfeld für Kryptowährung. Wenn Sie sich mit gate.io anschließen möchten, klicken Sie bitte auf den Link zum Herunterladen des offiziellen Registrierungsinstallationspakets, um Ihre Kryptowährungshandelsreise zu starten.

Dieses Tutorial führt Sie durch die Installation und Konfiguration von Nginx und PhpMyAdmin auf einem Ubuntu -System, möglicherweise neben einem vorhandenen Apache -Server. Wir werden das Einrichten von NGINX abdecken, potenzielle Portkonflikte mit Apache auflösen, MariADB (installieren
