I am soo new to this! I ahve just gotten mesa and installed it on my slack v7 system. I am wondering if someone could help me figure out how to test any of the files contained in the demo’s tar.gz that is distributed with mesa. EG: after installation (and let me say that there were plenty of warnings during it) I changed dirs to demos, and found alot of c files ( I thought that mesa was C++ ) so I figured that i could compile one of these to check it out. nothing doing. help please- i’d really like to learn to mess around with this stuff.
thanks
-9
gcc hello.c -I/usr/X11R6/include -L/usr/X11R6/lib -lglut -lGLU -lGL -o hello
This command string seems to compile most of the Mesa programs on my computer. It assumes that your header files are in /usr/X11R6/include most likely under the GL directory there. It also assumes that your shared libaries libGL.so…etc are in /usr/X11R6/lib. From what I’ve seen mesa is not C++. You can do c++ with them though just substitue g++ instead of gcc. (This is what i use on a Redhat linux box with X4.0).
I have wrote a bash script to increase the development of openGL. The script helps people to compile and link Mesa 3D library.
save the text to a file cc.sh and change it to executable by chmod a+x cc.sh Then type ./cc.sh --help to see how to use it to include OpenGL library properly. It supports OpenGL 3.5, 4.0.
If you are interested in 3D Math visualization , visit my projects : http://sourceforge.net/projects/mathdev/
#!/bin/bash
The shell script was created to compile the c++ source file *.cpp, *.c, *.cxx
, and debug using the GNU debuggin tools such as gdb and gprof
if [ -z “$1” ];
then
echo -e “Missing argument 1
usage: $0 [ filename without .cpp ] [ OPTIONS ]
Type $0 --help for command line options”
exit
fi
message of --help
helpMsg="usage: $0 [ filename without .cpp ] [ OPTIONS ]
The bash script accepts the following options :
-lFilename
include the library while linking.
This -l option is different from the -l in gcc compiler.
It does not search standard system directories but only
the full filename specified explicitly. For example,
cc.sh -lmy.o includes my.o while linking. -lmy does not
search the file libmy.a
-p
include the PLIB library, [http://plib.sourceforge.net/](http://plib.sourceforge.net/
)
--Mesa4Dir=DIR
change the default directory of Mesa 3D 4.0 from
/usr/local/Mesa-4.0 to DIR
-m4
compile and link using the gcc options for Mesa 3D 4.0
--Mesa35Dir=DIR
change the default directory of Mesa 3D 3.5 from
/usr/local/Mesa35 to DIR
-m35
compile and link using the gcc options for Mesa 3D 3.5
-glui
include the GLUI library, [http://www.cs.unc.edu/~rademach/glui/](http://www.cs.unc.edu/~rademach/glui/
)
-d
add debugging options for gcc compiler"
compile=
command to compile
cc=“c++”
compile options
cflags=“-W -Wall”
link=
command to link
ccld=“$cc”
libraries to include
libs=
link options
ldflags=“-W -Wall”
start the specific options
debugging options
db=“-a -g -pg”
directories of Mesa 3D library
Mesa4Dir=“/usr/local/Mesa-4.0”
Mesa35Dir=“/usr/local/Mesa35”
loop through all the arguments to determine the directory of Library
for arg in $@ ;
do
case $arg in
# print help message and quit
–help)
echo -e $helpMsg
exit
;;
# find the directory of Mesa 3D 4.0
–Mesa4Dir=)
Mesa4Dir=“echo $arg | sed -e 's/--Mesa4Dir=//'
”
;;
# find the directory of Mesa 3D 3.5
–Mesa35Dir=)
Mesa35Dir=“echo $arg | sed -e 's/--Mesa35Dir=//'
”
;;
esac
done
options for Mesa 3D 4.0
options to compile source code using Mesa 3D 4.0
cflagsM4=“-DHAVE_CONFIG_H -I. -I$Mesa4Dir -I$Mesa4Dir/include -DNDEBUG -g -Wall -fomit-frame-pointer -ffast-math -fstrict-aliasing -malign-loops=2 -malign-jumps=2 -malign-functions=2 -D_REENTRANT -DPTHREADS -c”
options to link Mesa 3D 4.0 library
ldflagsM4=“-g -Wall -fomit-frame-pointer -ffast-math -fstrict-aliasing -malign-loops=2 -malign-jumps=2 -malign-functions=2 -D_REENTRANT -DPTHREADS”
options to include Mesa 3D 4.0 library
libsM4=“$Mesa4Dir/src-glut/libglut.la $Mesa4Dir/si-glu/libGLU.la $Mesa4Dir/src/libGL.la -lm”
command to link Mesa 3D library
ldM=“/bin/sh $Mesa4Dir/libtool --mode=link c++”
options for GLUI
GLuiDir=“/usr/local/Mesa-4.0/src-glui/lib/”
options to include the GLUI library
libsGLUI=“-L$GLuiDir -lglui”
options to include PLIB library
libsPLIB=“-lglut -lGLU -lGL -L/usr/X11/lib -lX11 -lXext -lXmu -lm -lplibssg -lplibsl -lplibpu -lplibfnt -lplibsg -lplibul -lplibnet”
options for Mesa 3D 3.5
options to compile source code using Mesa 3D 3.5
cflagsM35=“-DHAVE_CONFIG_H -I. -I$Mesa35Dir -I$Mesa35Dir/include -DNDEBUG -I$Mesa35Dir/util -I$Mesa35Dir/src/X86 -g -Wall -ffast-math -fexpensive-optimizations -fstrict-aliasing -malign-loops=2 -malign-jumps=2 -malign-functions=2 -D_REENTRANT -DPTHREADS -c”
options to link Mesa 3D 3.5 library
ldflagsM35=“-g -Wall -ffast-math -fstrict-aliasing -malign-loops=2 -malign-jumps=2 -malign-functions=2 -D_REENTRANT -DPTHREADS”
libsM35=“$Mesa35Dir/si-glu/.libs/libGLU.so -L$Mesa35Dir/src $Mesa35Dir/src/.libs/libGL.so -L/usr/X11R6/lib $Mesa35Dir/src-glut/.libs/libglut.so -L$Mesa35Dir/si-glu $Mesa35Dir/src/.libs/libGL.so $Mesa35Dir/src/OSmesa/.libs/libMesaOS.so -lSM -lICE -lXmu -lXext -lXi -lX11 -lpthread -lm -Wl,–rpath -Wl,$Mesa35Dir/si-glu/.libs -Wl,–rpath -Wl,$Mesa35Dir/src/.libs -Wl,–rpath -Wl,$Mesa35Dir/src-glut/.libs -Wl,–rpath -Wl,$Mesa35Dir/src/OSmesa/.libs”
loop through all the arguments
for arg in $@ ;
do
case $arg in
# case of debugging option
-d)
cflags=“$cflags $db”
ldflags=“$ldflags $db”
;;
# case for Mesa 3D 4.0
-m4)
cflags=“$cflags $cflagsM4”
ldflags=“$ldflags $ldflagsM4”
libs=“$libs $libsM4”
ccld=“$ldM”
;;
# case for inclusion of PLIB
-p)
libs=“$libs $libsPLIB”
;;
# case for inclusion of GLUI library
-glui)
libs=“$libs $libsGLUI”
;;
# case for Mesa 3D 3.5
-m35)
cflags=“$cflags $cflagsM35”
ldflags=“$ldflags $ldflagsM35”
libs=“$libs $libsM35”
ccld=“$ldM”
;;
# case for inclusion of addition library files
-l*)
libs=“$libs echo $arg | sed -e 's/-l//'
”
;;
esac
done
check if the $1.o exists to prevent it from being overwritten
if [ -f $1.o ];
then
echo -e “Attempted to overwrite $1.o
Script exits”
exit
fi
start to compile
compile=“$cc $cflags -c”
link=“$ccld $ldflags $libs”
if [ -f $1.cpp ];
then
$compile $1.cpp
case of the .c file
elif [ -f $1.c ];
then
$compile $1.c
case of the .cxx file
elif [ -f $1.cxx ];
then
$compile $1.cxx
else
echo -e “$1.c, $1.cpp, or $1.cxx file not found”
fi
start to link
if [ -f $1.o ];
then
$link -o $1 $1.o
# move or remove the object file after linking
if [ -d ./.libs ]
then
mv --force $1.o ./.libs/
else
rm --force $1.o
fi
fi
This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.