Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Dynamic libs don't seem to work

8 views
Skip to first unread message

Klaas-Jan Stol

unread,
Dec 9, 2004, 6:09:17 PM12/9/04
to Internals List
Hello,

I just got a fresh cvs checkout, compiled it, compiled pge and tried to
make tcl.
This is what I get:

(cd ../../ && ./parrot --output=languages/tcl/lib/tcllib.pbc
languages/tcl/lib/tcllib.imc)
Couldn't load 'tcl_group': tcl_group: cannot open shared object file: No
such file or directory
error:imcc:Unknown PMC type 'TclString'

in file 'languages/tcl/lib/commands/upvar.imc' line 13
included from 'languages/tcl/lib/tcllib.imc' line 1
make: *** [lib/tcllib.pbc] Error 17


Also:
- when doing "make test", all tests with dynamic pmc seem to fail.
- following instructions in dynoplibs and trying to execute the
"test.pasm" in dynoplibs/ doesn't work either.

Couldn't load 'myops_ops': myops_ops: cannot open shared object file: No
such file or directory
Couldn't load 'foo': foo: cannot open shared object file: No such file
or directory
Couldn't load 'libnci': libnci: cannot open shared object file: No such
file or directory
error:imcc:parse error, unexpected IDENTIFIER, expecting PARROT_OP
in file 'dynoplibs/test.pasm' line 43

Obviously, there is something wrong with dynamic libs.
I don't get what I'm doing wrong. This should all work right? Perljam
(sorry, don't know his real name)
told me on IRC he did a fresh checkout, and it all worked.

Any ideas?
thanks,

klaas-jan

William Coleda

unread,
Dec 9, 2004, 6:49:30 PM12/9/04
to Klaas-Jan Stol, Internals List
Can you give us a copy of the generated "myconfig" file in the top level parrot directory?

Klaas-Jan Stol

unread,
Dec 10, 2004, 3:05:05 AM12/10/04
to William Coleda, Internals List

William Coleda wrote:

> Can you give us a copy of the generated "myconfig" file in the top
> level parrot directory?
>

yep,

this is it:
=================================
Summary of my parrot 0.1.1 configuration:
configdate='Thu Dec 9 23:53:50 2004'
Platform:
osname=linux, archname=i486-linux
jitcapable=1, jitarchname=i386-linux,
jitosname=LINUX, jitcpuarch=i386
execcapable=1
perl=/usr/bin/perl5.8.4
Compiler:
cc='cc', ccflags=' -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64',
Linker and Libraries:
ld='cc', ldflags=' -L/usr/local/lib',
cc_ldflags='',
libs='-lnsl -ldl -lm -lcrypt -lutil -lpthread -lrt -lgmp'
Dynamic Linking:
share_ext='.so', ld_share_flags='-shared -L/usr/local/lib -fPIC',
load_ext='.so', ld_load_flags='-shared -L/usr/local/lib -fPIC'
Types:
iv=long, intvalsize=4, intsize=4, opcode_t=long, opcode_t_size=4,
ptrsize=4, ptr_alignment=1 byteorder=1234,
nv=double, numvalsize=8, doublesize=8
=====================================

thanks,
kj

Sam Ruby

unread,
Dec 10, 2004, 5:33:43 AM12/10/04
to Klaas-Jan Stol, Internals List
Klaas-Jan Stol wrote:
> Hello,
>
> I just got a fresh cvs checkout, compiled it, compiled pge and tried to
> make tcl.
> This is what I get:
>
> (cd ../../ && ./parrot --output=languages/tcl/lib/tcllib.pbc
> languages/tcl/lib/tcllib.imc)
> Couldn't load 'tcl_group': tcl_group: cannot open shared object file: No
> such file or directory

Try rebuilding after you issue the following from your top level parrot
directory:

perl Configure.pl --prefix=`pwd`

- Sam Ruby

Klaas-Jan Stol

unread,
Dec 10, 2004, 11:31:56 AM12/10/04
to Sam Ruby, Internals List
Sam Ruby wrote:


thanks, that worked! (what does this "--prefix='pwd' " do?)
dynoplibs still doesn't work, however. is this correct?

klaas-jan

>
>


Sam Ruby

unread,
Dec 10, 2004, 11:59:12 AM12/10/04
to Klaas-Jan Stol, Internals List
Klaas-Jan Stol wrote:

Ultimately, when Parrot is released and someone installs it, shared
libraries will go into a place like /usr/local/lib. So, by default,
that's where Parrot is looking for tcl_group.

However, you aren't installing it, or copying these shared libraries.
Instead you want Parrot to look *here*. That's where prefix comes in.
Configure.pl saves your prefix in src/parrot_config.h where it is used
to construct paths used at runtime.

`pwd` simply is your current working directory.

Sorry, I don't know anything about dynopslibs.

- Sam Ruby

0 new messages