Den Terminal mellt gär eng OpenSSL-Versioun, an de Quellbam feelt nach ëmmer mat enger Noriicht iwwer fehlend Krypto-Header. Béid Aussoen sinn zur selwechter Zäit wouer, well en Ausféierungsgeschier an eng Rei vu Build-Agäng getrennt geliwwert ginn. Maacht dës véier Kontrollen an der Rei: installéiert Paken, Fuerschungsausgab, Sichweeër an zum Schluss, ob d’Quell selwer kompatibel ass. Hält bei där éischter un, déi de Feeler erklärt, amplaz eng al Ofhängegkeetslëscht anzefüügen.

Lafzäit a Build-Agäng si verschidde Paken

Eng Distributioun deelt OpenSSL an e Lafzäitpak, deen déi gedeelt Bibliothéik an de Kommandozeilegeschier liwwert, an e Entwécklungspak, deen Header, versiounsfräi Linkernimm an pkg-config-Metadaten liwwert. Déi éischt installéieren installéiert déi zweet net, an de Compiler brauch just déi zweet.

Préift, wat tatsächlech do ass, amplaz wat Dir Iech erënnert installéiert ze hunn. Op Debian-Ofleidungen ass den Entwécklungspak meeschtens libssl-dev, wärend d’Lafzäit e versiounéierte Bibliothéikspak plus de openssl-Binary ass.

dpkg -l | grep -E 'libssl-dev|libssl3|openssl'
pkg-config --modversion openssl
openssl version

Den éischte Befehl weist, wéi ee vun den dräi installéiert ass, den zweeten mellt d’Versioun, déi de Buildsystem iwwer pkg-config fanne wäert, an den drëtten mellt d’Lafzäitversioun. Eng fehlend Zeil an der éischter Ausgab erklärt de Feeler direkt. Eng Versiounsdifferenz tëscht der zweeter an drëtter ass en anert Problem, an et heescht meeschtens, datt zwou Installatiounen sech Konkurrenz maachen.

Liest d’Fuerschungsausgab vum Build selwer

Déi meescht Feeler sinn am Konfiguratiounslog ze gesinn, wann Dir en virun der Zesummefaassung liest. De FindOpenSSL-Modul vu CMake mellt, wéi en Include-Verzeechnes an wéi eng Bibliothéiken en fonnt huet, an en feelt mat enger spezifescher Noriicht, wann eng erfuerderlech Komponent fehlt.

Bestätegt, wéi eng Modulversioun de Projet benotzt, well eng agebaut Kopie am Quellbam sech anescht behuele kann wéi déi, déi mam installéierte CMake geliwwert gëtt. Liest duerno d’Komponentelëscht: e Projet, deen nëmmen Crypto freet, brauch d’SSL-Bibliothéik net, an een, deen SSL freet, wäert feelen, wann nëmmen en Deel vum Entwécklungspak do ass.

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
grep -i -E 'openssl|ssl' build/CMakeCache.txt

Den éischte Befehl konfiguréiert vun Null un nei, an den zweeten weist déi gecachte Resultater, dorënner all Wuerzelverzeechnes oder Bibliothéikspad, op deem de Modul sech festgeluecht huet. Wann de Cache op en aalt Präfix aus engem fréieren Versuch weist, läscht de Build-Verzeechnes a konfiguréiert nei, amplaz Wäerter vun Hand ze änneren. Al Cache-Anträg sinn eng heefeg Ursaach fir e Feeler, deen eng korrekt Korrektur iwwerlieft.

Riicht de Build enk op déi richteg Installatioun

Wann eng guttgeheescht OpenSSL ausserhalb vum Standard-Sichpad läit, dokumentéiert FindOpenSSL OPENSSL_ROOT_DIR als Hiweis fir genau dee Build. Op Unix-änleche Systemer freet et och pkg-config, sou datt e passenden PKG_CONFIG_PATH hëllefe kann ouni eppes global ze änneren.

cmake -S . -B build -DOPENSSL_ROOT_DIR=/opt/openssl-3.2 -DCMAKE_BUILD_TYPE=Release
ldd build/vpn_client | grep -i ssl

Den éischte Befehl begrenzt den Hiweis op ee Build-Verzeechnes, an den zweeten weist, wéi eng gedeelt Bibliothéik de resultéierende Binary bei der Lafzäit lued. E Build, deen un d’virgesinn Präfix linkt, an e Binary, deen eng aner lued, ass e Lafzäitpadproblem, keen Fuerschungsproblem, an et verlaangt eng Entscheedung iwwer rpath oder Loader-Konfiguratioun amplaz nach engem Konfiguratiounsschalter.

Halt dës Wiel lokal fir de Build. Systembibliothéiken ersetzen oder global pkg-config-Fichieren änneren, fir engem eenzege Projet ze genügen, ass de Wee, op deem en funktionéierende Schreifdësch e kaputten gëtt. E Build-Verzeechnes, dat de Präfix festhält, ass reproduzéierbar; eng Ännerung op der ganzer Maschinn ass en Supportfall, deen op den nächste Projet waart. Läscht de Build-Verzeechnes, wann Dir den Hiweis ännert, sou datt de Cache déi al Äntwert net ka behalen.

Wësst, wéini d’Quell de Problem ass

E gelungenen Konfiguratiounsschrëtt beweist nëmmen, datt d’Kontrollen ofgeschloss sinn. D’Kompilatioun ka weiderhin eng API refuséieren, déi d’Quell erwaart, an d’Linken ka weiderhin u engem fehlende Symbol scheiteren. Halt de éischte konkrete Feeler vun all Etapp fest, well déi spéider meeschtens Folgen sinn.

OpenSSL 3 huet e puer Schnëttstell fir veralt erkläert an ewechgeholl, déi méi al VPN-Clienten direkt benotzen, sou datt e Quellbam aus där Zäit écht Ännerungen amplaz vun engem neien Include-Pad brauch. Wann d’Betreiber eng aktuell Verëffentlechung ënnerstëtzen, benotzt déi. Wann net, gehéiert d’Entscheedung deene, déi den Déngscht besëtzen, an net enger Sich no engem méi ale Bibliothéiksfichiernumm.

Optional Schreifdëschkomponenten hunn och hir Ufuerderungen. En Kommandozeileziel, dat sech propper konfiguréiert, seet näischt doriwwer, ob de GUI-Toolkit an den Editor bauen, also behandelt eng al Qt-Pakelëscht als Geschicht an net als Spezifikatioun. Préift d’Optioune vun der Quellrevisioun selwer, wéi eng Schnëttstell standardméisseg ageschalt sinn. Baut dann nëmmen dat, wat Dir braucht, well all optional Ofhängegkeet en anert Fuerschungsproblem ass, dat drop waart ze geschéien.

Ähnlech Artikelen