Je cherche à créer une librairie partagée de Perl → un/le fichier "libperl.so
version 5.38.0" :
Qui peut me donner la solution - j’ai les sources de Perl perl-5.38.0/
J’ai essayé la commande suivante '"gcc -shared
" mais il doit manquer des fonctions (fichiers à inclure), truc à inclure.
Code :
root@mail:/home/orj# gcc -shared /home/orj/perl-5.38.0/libperl.a -o /usr/lib/x86_64-linux-gnu/libperl.so.5.38.0
root@mail:/home/orj# cd /usr/lib/x86_64-linux-gnu/
root@mail:/usr/lib/x86_64-linux-gnu# ln -s libperl.so.5.38.0 libperl.so.5.38
root@mail:/usr/lib/x86_64-linux-gnu# ls -l /usr/lib/x86_64-linux-gnu/libperl.so.*
lrwxrwxrwx 1 root root 17 mai 23 17:17 /usr/lib/x86_64-linux-gnu/libperl.so.5.30 -> libperl.so.5.30.0
-rw-r--r-- 1 root root 3468144 mai 23 17:17 /usr/lib/x86_64-linux-gnu/libperl.so.5.30.0
lrwxrwxrwx 1 root root 17 juil. 31 14:38 /usr/lib/x86_64-linux-gnu/libperl.so.5.38 -> libperl.so.5.38.0
-rwxr-xr-x 1 root root 15432 juil. 31 14:38 /usr/lib/x86_64-linux-gnu/libperl.so.5.38.0
Vu le poids des fichiers - çà ne doit pas être bon.
Faut-il que j’ajoute le binaire de perl lui-même, peut-être ?
Informations sur le sujet :
- Dynamically Loaded (DL) Libraries
- bibliotheque .a ou .so - Administration système
- Creating a shared and static library with the gnu compiler (gcc)
- Créer un exécutable à partir de sources Perl
- c - How correct link program with libperl.so - Stack Overflow
- Shared libraries with GCC on Linux - Cprogramming.com
Merci.
Bonne journée.
Romain
Parce que j’ai une commande qui me retourne cette erreur :
Socket.c: loadable library and perl binaries are mismatched
Quand je cherche :
root@mail:/usr/lib/x86_64-linux-gnu# find / -iname "libperl*" -print
/usr/share/lintian/overrides/libperl5i-perl
/usr/share/doc/libperlio-utf8-strict-perl
/usr/share/doc/libperl5.30
/usr/share/doc/libperl4-corelibs-perl
/usr/share/doc/libperl5i-perl
/usr/share/doc/libperl6-caller-perl
/usr/lib/x86_64-linux-gnu/libperl.so.5.30
/usr/lib/x86_64-linux-gnu/libperl.so.5.30.0
/usr/lib/perl5/5.38.0/x86_64-linux/CORE/libperl.a
/var/lib/dpkg/info/libperlio-utf8-strict-perl.list
/var/lib/dpkg/info/libperl4-corelibs-perl.md5sums
/var/lib/dpkg/info/libperl5.30:amd64.list
/var/lib/dpkg/info/libperl6-caller-perl.list
/var/lib/dpkg/info/libperl4-corelibs-perl.list
/var/lib/dpkg/info/libperl5.30:amd64.md5sums
/var/lib/dpkg/info/libperlio-utf8-strict-perl.md5sums
/var/lib/dpkg/info/libperl6-caller-perl.md5sums
/var/lib/dpkg/info/libperl5.30:amd64.shlibs
/var/lib/dpkg/info/libperl5i-perl.md5sums
/var/lib/dpkg/info/libperl5.30:amd64.triggers
/var/lib/dpkg/info/libperl5i-perl.list
/var/lib/dpkg/info/libperl5.30:amd64.symbols
/home/orj/perl-5.38.0/libperl.a
/home/orj/perl-5.38.0/t/porting/libperl.t
/opt/zimbra/.cpan/build/mod_perl-1.31-0/apaci/libperl.module
Sur un Perl v5.38.0 :
root@mail:/usr/lib/x86_64-linux-gnu# perl -v
This is perl 5, version 38, subversion 0 (v5.38.0) built for x86_64-linux
file "libperl.a" : librairie statique (les ".a") si j'ai bien compris - Dans les sources et après la compilation. dans le système.
root@mail:/usr/lib/x86_64-linux-gnu# ls -l /usr/lib/perl5/5.38.0/x86_64-linux/CORE/libperl.a /home/orj/perl-5.38.0/libperl.a
-rw-r--r-- 1 root root 5518838 juil. 20 15:15 /home/orj/perl-5.38.0/libperl.a
-r--r--r-- 1 root root 5518838 juil. 20 15:15 /usr/lib/perl5/5.38.0/x86_64-linux/CORE/libperl.a
La solution doit être celle de mon commentaire 6 mais je n’y arrive pas