Pagina 1 di 1

compilazione su solaris

Inviato: gio 7 ago 2008, 11:33
da sbabaro
So che è solaris e non linux, ma volevo comunque chiedere un consulto
sto cercando di compilare sotto solaris una interfaccia open python per chiamate PKCS11 verso librerie in C
Praticamente questa interfaccia utilizza guile per la parte C.
Sotto linux mi si compila senza problemi, sotto solaris mi dà errrori di sintassi nel make, e si ferma ad un certo punto dicendomi che non esiste file in input
C'è qualcuno che ha esperienze di compilazione sotto solaris, disponibile ad aiutarmi?
nel caso posto l'output del make

Re: compilazione su solaris

Inviato: gio 7 ago 2008, 14:46
da sid77
io controllerei che versioni di make e di Makefile stai utilizzando.
da come descrivi il problema sembra che il programma che devi compilare si aspetti GNU make, mentre solaris ha BSD make. se è così, di solito si risolve installando il pacchetto che contiene il make di GNU e invocando gmake al posto di make.

ciao

Re: compilazione su solaris

Inviato: gio 7 ago 2008, 15:07
da Mario Vanoni
sid77 ha scritto:io controllerei che versioni di make e di Makefile stai utilizzando.
da come descrivi il problema sembra che il programma che devi compilare si aspetti GNU make, mentre solaris ha BSD make. se è così, di solito si risolve installando il pacchetto che contiene il make di GNU e invocando gmake al posto di make.

ciao
Esatto, dai tempi di AT&T UNIX!

Compila le utilities GNU con il prefisso "g",
nei Makefile in generis e` previsto,
dopo hai make, gmake, cc, gcc, find, gfind ecc.
e compili ogni GPL senza problemi.

Re: compilazione su solaris

Inviato: gio 7 ago 2008, 16:34
da sbabaro
allora, il problema sembra legato all'estensione dei file
essendo file c++, l'estensione dei file da compilare è cpp
cc di sun non li riconosce

Re: compilazione su solaris

Inviato: gio 7 ago 2008, 16:40
da sbabaro
sto provando ad usare il comando CC per compilare al posto di cc

Codice: Seleziona tutto

/usr/bin/CC -i -xO4 -xspace -xstrconst -xarch=v8a -mr -DANSICPP -D__STDC_VERSION__=199409L -DNDEBUG -O -Isrc -I/usr/sfw/include/python2.3 -c src/utility.cpp -o build/temp.solaris-2.10-sun4u-2.3/src/utility.o
CC: Warning: Option -xstrconst passed to ld, if ld is invoked, ignored otherwise
CC: Warning: -O overwrites previously set optimization level of -O4
"src/pykcs11string.h", line 24: Error: Multiple declaration for PyKCS11String.
"src/pykcs11string.h", line 31: Error: Multiple declaration for PyKCS11String.
2 Error(s) detected.
/usr/ccs/bin/mcs: build/temp.solaris-2.10-sun4u-2.3/src/utility.o: cannot open file.
        File o directory non trovati
error: command '/usr/bin/CC' failed with exit status 3
il problema è che non sto capendo molto bene cosa succede

tra l'altro se provo con gcc mi dà altri errori

Re: compilazione su solaris

Inviato: gio 7 ago 2008, 17:33
da Mario Vanoni
sbabaro ha scritto:sto provando ad usare il comando CC per compilare al posto di cc

Codice: Seleziona tutto

/usr/bin/CC -i -xO4 -xspace -xstrconst -xarch=v8a -mr -DANSICPP -D__STDC_VERSION__=199409L -DNDEBUG -O -Isrc -I/usr/sfw/include/python2.3 -c src/utility.cpp -o build/temp.solaris-2.10-sun4u-2.3/src/utility.o
CC: Warning: Option -xstrconst passed to ld, if ld is invoked, ignored otherwise
CC: Warning: -O overwrites previously set optimization level of -O4
"src/pykcs11string.h", line 24: Error: Multiple declaration for PyKCS11String.
"src/pykcs11string.h", line 31: Error: Multiple declaration for PyKCS11String.
2 Error(s) detected.
/usr/ccs/bin/mcs: build/temp.solaris-2.10-sun4u-2.3/src/utility.o: cannot open file.
        File o directory non trovati
error: command '/usr/bin/CC' failed with exit status 3
il problema è che non sto capendo molto bene cosa succede

tra l'altro se provo con gcc mi dà altri errori
Hai compilata la GNU Compilation Collection con cc(1) di Solaris?
Il tuo CC e` una copia/un link a gcc?

Sotto Linux per i codici *.cpp esiste g++ quale compilatore,
un link OK, ma specifico per programmi C++.

Re: compilazione su solaris

Inviato: gio 7 ago 2008, 17:54
da sbabaro
sulla macchina solaris ho installato il sun studio
ho fatto

Codice: Seleziona tutto

export CC=/usr/bin/CC
ed ora inizia a compilare

Il problema è che mi dà

Codice: Seleziona tutto

"src/pykcs11string.h", line 24: Error: Multiple declaration for PyKCS11String.
"src/pykcs11string.h", line 31: Error: Multiple declaration for PyKCS11String.
questo perchè diversi file fanno include dello stesso punto h
ho provato a modificare mettendo a tutte le chiamate di quell'include una cosa di questo genere

Codice: Seleziona tutto

#ifndef _PYKCS11STRING
#include "pykcs11string.h"
#define _PYKS11STRING
#endif
ma mi ignora

Ho provato ad eliminare (remmando) le chiamate all'include del file incriminato, e mi compila il primo file, poi al secondo si pianta
Il problema è che tra l'altro non riesco a trovare dove è definito il flusso di compilazione, visto che questo è il Makefile

Codice: Seleziona tutto

# give some default values
PREFIX ?= /usr
DESTDIR ?= /

build: src/unix_pykcs11_wrap.cpp
        python setup.py build

install: build
        python setup.py install --prefix=$(PREFIX) --root=$(DESTDIR)

clean:
        python setup.py clean
        rm -f src/unix_pykcs11_wrap.cpp
        rm -rf build

rebuild: clean build

src/unix_pykcs11_wrap.cpp: src/pykcs11.i
        cd src ; swig -c++ -python pykcs11.i ; mv pykcs11_wrap.cxx unix_pykcs11_wrap.cpp ; mv PyKCS11.py ..

src/pykcs11.i: src/rsaref/cryptoki.h src/pkcs11lib.h src/pykcs11string.h src/ck_attribute_smart.h
mentre il setup.py è

Codice: Seleziona tutto

# python setup.py install --root=/tmp/p
# PYTHONPATH=/tmp/p/usr/lib/python2.4/site-packages python test.py 

from distutils.core import setup, Extension

setup(name="PyKCS11", version="1.0.2",
        ext_modules=[
                Extension(
                        "_PyKCS11",
                        ["src/ck_attribute_smart.cpp", "src/pkcs11lib.cpp",
                        "src/pykcs11string.cpp", "src/unix_pykcs11_wrap.cpp",
                        "src/utility.cpp", "src/dyn_unix.c"],
                        include_dirs = ["src"],
                        libraries = ["python2.4"]
                )
        ],
        py_modules=["PyKCS11"],
)

considera che il primo file che inizia a compilare è "src/utility.cpp",