[c] perl embed sous linux

perl embed sous linux [c] - C - Programmation

Marsh Posté le 04-07-2003 à 03:53:18    

pom
 
j'aimerai utiliser une fonction perl dans mon tit code c, sous netbsd je l'ai deja fait mais j'ai un petit pb sous linux, avec le header perl.h (j'ai include EXTERN.h, pas de souci avec)
 
gcc me sort:
 


main.o(.text+0x1f): In function `main':
main.c:19: undefined reference to `PerlIO_stdoutf'
gnl.o(.text+0x196): In function `gnl':
gnl.c:41: undefined reference to `PerlIO_stdoutf'
...


 
en gros pour tout ce qui touche aux fd (printf entre autres ..) il me gueule ca :/ (oui je link bien avec les libs pour la compilation)
 
une idée kk1 ?


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Marsh Posté le 04-07-2003 à 03:53:18   

Reply

Marsh Posté le 04-07-2003 à 04:13:00    

t'es sur que c'est pas PerlIO_stdoutfd

Reply

Marsh Posté le 04-07-2003 à 14:06:00    

++Taz a écrit :

t'es sur que c'est pas PerlIO_stdoutfd

.
 
c un c/c
le pb est pas la, sous netbsd il me fait pas ca.


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Marsh Posté le 04-07-2003 à 15:39:09    

je n'utilise PAS de fonction perl sur les fd, c juste qu'il 'bind' mes fonction c avec son machin perl.. mais je sais pas pkoi


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Marsh Posté le 04-07-2003 à 16:04:36    

tu donnes ta ligne de compilation quand meme histoire de voir (et si elle est différente celle sous BSD)

Reply

Marsh Posté le 04-07-2003 à 16:22:08    

en gros le Makefile c :
 
 


NAME = bot
 
SRC = main.c gnl.c masta.c parse_one.c send.c getfunc.c glo.c sendspe.c poah_gen.c parse_two.c parse_own.c parse_pub.c trash.c perform.c rand.c rancmd.c sys.c kill.c addfile.c urls.c
 
OBJ = $(SRC:.c=.o)
 
CFLAGS = -O3 -Wall -g
CPPFLAGS = -I/usr/lib/perl5/5.8.0/i686-linux/CORE/
LDFLAGS = -L/usr/lib/perl5/5.8.0/i686-linux/CORE/ -lperl -lm -lcrypt
 
all : $(NAME)
 
$(NAME) : $(OBJ)
 gcc -o $(NAME) $(OBJ) -L/usr/lib/ -lefence
 

 
 
le meme que sous netbsd (a part les path bien entendu)
 
sous netbsd j'utilse 3 include,
 
 


#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

 
 
sous linux le 2eme me fait les erreurs citées plus haut :/


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Marsh Posté le 04-07-2003 à 16:37:57    

-O3 et -g t'as pas du tout comprendre...   [:tomtom75]  
 
je pense qu'il faut d'abord que tu règles tes problème d'include parce qu'il peut y avoir des définitions dedans

Reply

Marsh Posté le 04-07-2003 à 16:49:48    

++Taz a écrit :

-O3 et -g t'as pas du tout comprendre...   [:tomtom75]  


cad?
que ca peut foirer dans certain cas les 2 en meme tps ?
sinon je vois pas quel est le pb a foutre -g en cflags, encore moins -O3
 

++Taz a écrit :


je pense qu'il faut d'abord que tu règles tes problème d'include parce qu'il peut y avoir des définitions dedans


 
bah c bien la le pb ...
je vois pas commetn le regler le pb, sinon j'aurai pas posté


Message édité par Nokbilong le 04-07-2003 à 16:54:31

---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Marsh Posté le 04-07-2003 à 16:58:46    

-g => symbol de debug
-O3 => plus au niveau d'optimisation. la premiere chose que fait alros ton compilateur c'est de virer tous les symboles de debuggage. et puis optimiser en phase de developpement, c'est un perte de temps
 
moi je l'ai  
 
[benoit@benmaster tmp]$ slocate perl.h
/usr/lib/perl/5.8.0/CORE/perl.h
 
et il te le faut. t'as quelle distribution?
 

Code :
  1. #if !defined(PERLIO_IS_STDIO)
  2. /*
  3. * Remap printf
  4. */
  5. #undef printf
  6. #ifdef __GNUC__
  7. #define printf(fmt,args...) PerlIO_stdoutf(fmt,##args)
  8. #else
  9. #define printf PerlIO_stdoutf
  10. #endif
  11. #endif

moi j'ai ça et ça prouve bien que t'en as besoin
 
 

Reply

Marsh Posté le 04-07-2003 à 17:07:21    

++Taz a écrit :

-g => symbol de debug
-O3 => plus au niveau d'optimisation. la premiere chose que fait alros ton compilateur c'est de virer tous les symboles de debuggage. et puis optimiser en phase de developpement, c'est un perte de temps


 
bah pourtant que je compile avec ou sans -g y'a une dif pour gdb :/
 

++Taz a écrit :


moi je l'ai  
 
[benoit@benmaster tmp]$ slocate perl.h
/usr/lib/perl/5.8.0/CORE/perl.h
 
et il te le faut. t'as quelle distribution?
 

Code :
  1. #if !defined(PERLIO_IS_STDIO)
  2. /*
  3. * Remap printf
  4. */
  5. #undef printf
  6. #ifdef __GNUC__
  7. #define printf(fmt,args...) PerlIO_stdoutf(fmt,##args)
  8. #else
  9. #define printf PerlIO_stdoutf
  10. #endif
  11. #endif

moi j'ai ça et ça prouve bien que t'en as besoin


 
(fk@tek)locate perl.h
/usr/lib/perl5/5.8.0/i686-linux/CORE/perl.h
(fk@tek)
 
je l'ai c pas un pb.
le pb c les msg d'err qu'il me sorts quand je l'include


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Marsh Posté le 04-07-2003 à 17:07:21   

Reply

Marsh Posté le 04-07-2003 à 17:10:05    

essaye avec -D__GNUC__

Reply

Marsh Posté le 04-07-2003 à 17:16:11    

++Taz a écrit :

essaye avec -D__GNUC__


 
en cflags ca me sorts :
 


<command line>:1:1: warning: "__GNUC__" redefined
<command line>:1:1: warning: this is the location of the previous definition

 
 
sinon ca change pas.


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Marsh Posté le 04-07-2003 à 17:20:25    

il la trouve bien la lib perl? parce que moi elle est pas dans /usr/lib/perl/5.8.0/CORE/

Reply

Marsh Posté le 04-07-2003 à 17:22:57    

++Taz a écrit :

il la trouve bien la lib perl? parce que moi elle est pas dans /usr/lib/perl/5.8.0/CORE/


 
ouai il la trouve
elle est dans le meme rep que les 2 autres
et je link avec ce rep


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Marsh Posté le 06-07-2003 à 16:23:02    

:bounce:


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Marsh Posté le 06-07-2003 à 17:30:29    

ben ça vient de toi et de ton système on va dire, vu que tu nous donnes meme pas ne serait-ce qu'un petit bout de code pour qu'on essaye...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed