Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10174[/thread]

Für XS-Komponente Compiler notwendig?

Leser: 2


<< >> 10 Einträge, 1 Seite
RalphFFM
 2007-08-22 17:43
#98524 #98524
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Es gibt Module die eine Komponente aus C/C++ beinhalten, m.W. mittels einer XS-Datei.
Wird zur Installation dieser Module eigentlich ein separater Compiler wie gcc oder g++ benötigt?

Und eine Zusatzfrage falls "nein": wie wird dann ohne Compiler der C/C++-Code übersetzt?
Macht das dieser ominöse "XS-Compiler"? Greift dieser dann auf gcc o.ä. zurück?

Trotz googlen werde ich bei dieser Frage nicht so recht schlau.
Taulmarill
 2007-08-22 19:23
#98529 #98529
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Ja, sobald ein modul XS-code benutzt um auf C-libs zuzugreifen, brauchst du einen Compiler.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
murphy
 2007-08-23 17:51
#98577 #98577
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Es ist auch ratsam, zum Übersetzen der XS-Module denselben Kompiler zu verwenden mit dem auch das Perl, für das sie gedacht sind, erstellt wurde -- ansonsten kann es zu binären Inkompatibilitäten kommen.
When C++ is your hammer, every problem looks like your thumb.
RalphFFM
 2007-08-23 19:14
#98581 #98581
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Inzwischen weiß ich wie ich meine Frage verständlicher formulieren kann:

Es gibt Webspace-Pakete, die denen man mangels Rechte nicht mal eben den gcc (nach-)installieren kann.
Ist auch in einer solchen Umgebung die Installation eines Moduls mit C-Komponenten wie z.B. DBD::SQLite möglich?
(Daß meist ein priv.Verzeichnis herhalten muß ist klar, kein Problem.)

Wenn ich Taulmarill richtig verstanden habe wird das nicht möglich sein.(?)
renee
 2007-08-23 19:22
#98584 #98584
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
CGIpan könnte Dir helfen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Taulmarill
 2007-08-23 19:25
#98585 #98585
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Theoretisch ist das schon möglich. Aber nur wenn du genau weißt, auf was für einer Plattform du dich befindest und mit welchem gcc/libc das perl (perl, nicht Per. Weil hier der Interpreter und nicht die Sprache gemeint ist) compiliert wurde. Dann kannst du genau diese Umgebung auf einem eigenen Rechner nachstellen, das gewünschte Modul compilieren und dann auf den Server in ein eigenes lib-Verzeichnis kopieren, welches du dann mit use lib; einbinden kannst.

Zugegeben, das ist eher was für abenteuerlustige Bastler. Aber theoretisch möglich.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
nepos
 2007-08-23 19:43
#98586 #98586
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Vor einer solchen Aktion könnte man aber auch einfach mal beim Hoster nachfragen, ob die das einem nicht installieren können.
murphy
 2007-08-23 19:47
#98589 #98589
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Taulmarill+2007-08-23 17:25:44--
[...] Dann kannst du genau diese Umgebung auf einem eigenen Rechner nachstellen, das gewünschte Modul compilieren und dann auf den Server in ein eigenes lib-Verzeichnis kopieren, [...]


Theoretisch reicht es auch, die von XS erzeugten C-Quellen mit einem (Cross-)Compiler zu übersetzen. Das erfordert dann aber unter Umständen etwas Handarbeit und man sollte wissen, was man da tut.

Unter Umständen gibt es aber für die Module, die Du suchst, bereits Binärpakete, die für Deine Distribution geeignet sind. Selbst wenn man den entsprechenden Paketmanager nicht verwendet, kann man ja mal versuchen ein für die eigene libc passendes Debian- oder ActiveState-Paket des gewünschten Perlmodules zu entpacken und zu verwenden -- wenn schon Handarbeit nötig ist, so dürfte diese Variante, falls sie funktioniert, weniger Aufwand als das Einrichten einer passenden Kompilationsumgebung verursachen.
When C++ is your hammer, every problem looks like your thumb.
bloonix
 2007-08-23 19:56
#98590 #98590
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
murphy+2007-08-23 15:51:53--
Es ist auch ratsam, zum Übersetzen der XS-Module denselben Kompiler zu verwenden mit dem auch das Perl, für das sie gedacht sind, erstellt wurde -- ansonsten kann es zu binären Inkompatibilitäten kommen.

Wenn eine neue Perl-Version installiert wird, müssten auch immer
alle Module mit XS-Komponenten neu kompiliert werden, die über
CPAN oder manuell installiert wurden. Das erweist sich als nicht so
einfach. Es sei, es gibt eine Möglichkeit, alle Module, die nicht in
der Corelist stehen und nicht via Paketmanager installiert wurden
und XS-Komponenten haben, neu zu kompilieren. Gibt es da was?
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
ptk
 2007-08-24 23:47
#98638 #98638
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Bei CPAN.pm gibt es die Möglichkeit, einen Snapshot der installierten Module im alten perl per "autobundle" zu erzeugen und das erzeugte Bundle im neuen perl zu installieren. Aber hier wird nicht zwischen XS- und Nicht-XS-Modul unterschieden. Das könnte man vielleicht, indem man noch den DSLIP_STATUS der Module überprüft (falls überhaupt existent; bei XS-Modulen gibt es ein "c" bei "L").
<< >> 10 Einträge, 1 Seite



View all threads created 2007-08-22 17:43.