[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: C/C++ using octave
From: |
viveks |
Subject: |
Re: C/C++ using octave |
Date: |
Tue, 18 Apr 2000 13:01:31 +0530 (IST) |
Hello:
I am trying to get used to liboctave and related stuff in order to use the
octave class facilties. I too tried the compile code test1.cc (shown at
the end of the mail) as
gcc test1.cc -L/usr/lib/octave -loctave -lcruft -lkpathsea -lreadline -lg2c
I get the following error:
/usr/lib/octave/liboctave.so: undefined reference to `kpse_clear_dir_cache'
collect2: ld returned 1 exit status
Apparently, I am asked to link with some additional library. Could someone
help me identify that? I am on a RedHat Linux 6.0 running octave 2.0.14.
On 22 Feb 2000 John W. Eaton wrote:
> But you may need other things that are referenced by liboctave and
> libcruft, such as the Fortran libraries (system dependent, but the
> list appears in the generated mkoctfile script) readline, kpathsearch,
> and the dynamic linking library.
In the "mkoctfile" script, I could not find any "system dependent list" of
libraries as siggested here. ("mkoctfile" with me was the one I got in the
rpm package for octave 2.0.14. I don't know how to generate or probably
don't have 'generated mkoctfile'. I have appened mkoctfile too.)
Best regards,
Vivek...
--------------------------------------------------------
Here is the code test1.cc taken from the archive:
> | ----- test1.cc ------
> | #include <octave/oct.h>
> |
> | main(){
> | Matrix A;
> | }
> | ---------------------
### ------------- MKOCTFILE AVAILABLE WITH ME IS
# REPRODUCED BELOW -----------------
#! /bin/sh
#
# mkoctfile -- create a .oct file suitable for dynamic linking by
# Octave.
# Exit immediately on any error.
set -e
# Default values for these variables are filled in when Octave is
# compiled.
: ${CPPFLAGS=""}
: ${INCFLAGS="-I/usr/include -I/usr/include/octave-2.0.14"}
: ${F77="g77"}
: ${FFLAGS="-O"}
: ${FPICFLAG="-fPIC"}
: ${CC="gcc"}
: ${CFLAGS="-DHAVE_CONFIG_H -mieee-fp -O2"}
: ${CPICFLAG="-fPIC"}
: ${CXX="c++"}
: ${CXXFLAGS="-O2"}
: ${CXXPICFLAG="-fPIC"}
: ${XTRA_CFLAGS="-mieee-fp -fno-rtti -fno-exceptions -fno-implicit-templates"}
: ${XTRA_CXXFLAGS="-mieee-fp -fno-rtti -fno-exceptions -fno-implicit-templates"}
: ${SH_LD="c++"}
: ${SH_LDFLAGS="-shared"}
: ${ALL_FFLAGS="$FFLAGS"}
: ${ALL_CFLAGS="$INCFLAGS $XTRA_CFLAGS $CFLAGS"}
: ${ALL_CXXFLAGS="$INCFLAGS $XTRA_CXXFLAGS $CXXFLAGS"}
# Local variables.
usage_msg="usage: mkoctfile [options] file ..."
cfiles=
ccfiles=
f77files=
objfiles=
octfiles=
octfile=
incflags=
defs=
ldflags=
dbg=:
strip=false
if [ $# -eq 0 ]; then
echo $usage_msg
exit 1;
fi
while [ $# -gt 0 ]; do
file=
case "$1" in
*.c)
file=$1
cfiles="$cfiles $file"
;;
*.cc | *.C | *.cpp)
file=$1
ccfiles="$ccfiles $file"
;;
*.f | *.F)
file=$1
f77files="$f77files $file"
;;
*.o)
file=$1
objfiles="$objfiles $file"
;;
-d | --debug | -v | --verbose)
dbg=echo
;;
-h | -\? | --help)
echo $usage_msg
cat << EOF
Options:
-h, -?, --help Print this message.
-IDIR Add -IDIR to compile commands.
-DDEF Add -DDEF to compile commands.
-lLIB Add library LIB to link command.
-LDIR Add -LDIR to link command.
-o FILE, --output FILE Output file name. Default extension is .oct.
-s, --strip Strip output file.
-v, --verbose Echo commands as they are executed.
FILE Compile or link FILE. Recognized file types are:
.c C source
.cc C++ source
.C C++ source
.cpp C++ source
.f Fortran source
.F Fortran source
.o object file
EOF
exit 0
;;
-I*)
incflags="$incflags $1"
;;
-D*)
defs="$defs $1"
;;
-[lL]*)
ldflags="$ldflags $1"
;;
-o | --output)
shift
if [ $# -gt 0 ]; then
octfile=`echo $1 | sed 's,\.[^.]*$,,'`.oct
else
echo "mkoctfile: output file name missing"
fi
;;
-s | --strip)
strip=true
;;
*)
echo "mkoctfile: unrecognized argument $1"
exit 1
;;
esac
if [ -n "$file" ]; then
if [ -z "$octfile" ]; then
octfile=`echo $file | sed 's,\.[^.]*$,,'`.oct
fi
fi
shift
done
# Compile Fortran, C, and C++ files. Add the name of each object file
# that is produced to the overall list of object files.
if [ -n "$f77files" ]; then
for f in $f77files; do
case $f in
*.f)
b=`echo $f | sed 's,\.f$,,'`
;;
*.F)
b=`echo $f | sed 's,\.F$,,'`
;;
esac
o=$b.o
objfiles="$objfiles $o"
$dbg $F77 -c $FPICFLAG $ALL_FFLAGS $f -o $o
eval $F77 -c $FPICFLAG $ALL_FFLAGS $f -o $o
done
fi
if [ -n "$cfiles" ]; then
for f in $cfiles; do
b=`echo $f | sed 's,\.c$,,'`
o=$b.o
objfiles="$objfiles $o"
$dbg $CC -c $CPPFLAGS $CPICFLAG $ALL_CFLAGS $incflags $defs $f -o $o
eval $CC -c $CPPFLAGS $CPICFLAG $ALL_CFLAGS $incflags $defs $f -o $o
done
fi
if [ -n "$ccfiles" ]; then
for f in $ccfiles; do
case $f in
*.cc)
b=`echo $f | sed 's,\.cc$,,'`
;;
*.C)
b=`echo $f | sed 's,\.C$,,'`
;;
*.cpp)
b=`echo $f | sed 's,\.cpp$,,'`
;;
esac
o=$b.o
objfiles="$objfiles $o"
$dbg $CXX -c $CPPFLAGS $CXXPICFLAG $ALL_CXXFLAGS $incflags $defs $f -o $o
eval $CXX -c $CPPFLAGS $CXXPICFLAG $ALL_CXXFLAGS $incflags $defs $f -o $o
done
fi
# Link all the object files.
$dbg $SH_LD $SH_LDFLAGS -o $octfile $objfiles $ldflags
eval $SH_LD $SH_LDFLAGS -o $octfile $objfiles $ldflags
# Maybe strip it.
if $strip; then
$dbg strip $octfile
eval strip $octfile
fi
exit 0
### ------------- END OF MKOCTFILE -----------------
-----------------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.
Octave's home on the web: http://www.che.wisc.edu/octave/octave.html
How to fund new projects: http://www.che.wisc.edu/octave/funding.html
Subscription information: http://www.che.wisc.edu/octave/archive.html
-----------------------------------------------------------------------
- Re: C/C++ using octave,
viveks <=