For the below program compiling with GCC works:
$ gcc memtray.c `pkg-config --libs --cflags gtk+-2.0`
But not with TinyC (the command is different in a single character g->t):
$ tcc memtray.c `pkg-config --libs --cflags gtk+-2.0`
tcc: error: undefined symbol 'main'
But main is there:
#include <gtk/gtk.h>
#include <string.h>
#include <stdlib.h>
..... program code .....
int main(int argc, char ** argv) {
gtk_init(&argc, &argv);
create_tray_icon();
gtk_main();
return 0;
}
Here is what pkg-config unrolls to:
$ pkg-config --libs --cflags gtk+-2.0
-pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include
-I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0
-I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1
-I/usr/include/libpng12 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng12
-I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
-I/usr/include/freetype2 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0
-latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0
-lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype
Notice the -phtread part, it is not really necessary for my program, if I issue the command below (same as above but without without -pthread), compilation works:
$ tcc memtray.c -o memtray -I/usr/include/gtk-2.0
-I/usr/lib/x86_64-linux-gnu/gtk-2.0/include
-I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0
-I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1
-I/usr/include/libpng12 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng12
-I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
-I/usr/include/freetype2 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0
-latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0
-lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype
But such long command is not only inconvenient but also is less portrable.
How to compile GTK2 program with TinyC and pkg-config?
Related
I have a legacy Perl 5.8.9 project which I need to run in a docker environment. Since I new it worked on Ubuntu I tried compiling it on an Ubuntu 16.1 and
FROM ubuntu
RUN apt-get update \
&& apt-get install -y curl \
&& apt-get install -y wget \
&& apt-get install -y perlbrew
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
Images
since I couldn't find the version on perlbrew, I tried compiling from perl-5.8.9.tar.bz2 which I downloaded
Compilation failed having something to do with miniperl.
perlio.c:515:2: note: in expansion of macro 'PerlLIO_write'
PerlLIO_write(dbg, s, len);
^~~~~~~~~~~~~
perlio.c: In function 'PerlIO_parse_layers':
perlio.c:995:11: warning: this statement may fall through [-Wimplicit-
fallthrough=]
if (*e++) {
^
perlio.c:1001:4: note: here
case '\0':
^~~~
In file included from perl.h:3169:0,
from perlio.c:57:
perlio.c: In function 'S_more_refcounted_fds':
iperlsys.h:762:39: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result]
#define PerlLIO_write(fd, buf, count) write((fd), (buf), (count))
^~~~~~~~~~~~~~~~~~~~~~~~~~~
perlio.c:2307:2: note: in expansion of macro 'PerlLIO_write'
PerlLIO_write(PerlIO_fileno(Perl_error_log),
^~~~~~~~~~~~~
`sh cflags "optimize='-O2'" perlapi.o` perlapi.c
CCCMD = cc -DPERL_CORE -c -fno-strict-aliasing -pipe - I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 - O2 -Wall -ansi -pedantic -W -Wextra -Wdeclaration-after-statement -Wendif-labels -Wc++-compat -DPERL_GCC_PEDANTIC
`sh cflags "optimize='-O2'" numeric.o` numeric.c
CCCMD = cc -DPERL_CORE -c -fno-strict-aliasing -pipe - I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 - O2 -Wall -ansi -pedantic -W -Wextra -Wdeclaration-after-statement -Wendif- labels -Wc++-compat -DPERL_GCC_PEDANTIC
`sh cflags "optimize='-O2'" mathoms.o` mathoms.c
CCCMD = cc -DPERL_CORE -c -fno-strict-aliasing -pipe - I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 - O2 -Wall -ansi -pedantic -W -Wextra -Wdeclaration-after-statement -Wendif- labels -Wc++-compat -DPERL_GCC_PEDANTIC
`sh cflags "optimize='-O2'" locale.o` locale.c
CCCMD = cc -DPERL_CORE -c -fno-strict-aliasing -pipe - I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 - O2 -Wall -ansi -pedantic -W -Wextra -Wdeclaration-after-statement -Wendif- labels -Wc++-compat -DPERL_GCC_PEDANTIC
`sh cflags "optimize='-O2'" pp_pack.o` pp_pack.c
CCCMD = cc -DPERL_CORE -c -fno-strict-aliasing -pipe - I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 - O2 -Wall -ansi -pedantic -W -Wextra -Wdeclaration-after-statement -Wendif- labels -Wc++-compat -DPERL_GCC_PEDANTIC
pp_pack.c: In function 'S_pack_rec':
pp_pack.c:2716:7: warning: variable 'was_utf8' set but not used [- Wunused-but-set-variable]
U32 was_utf8;
^~~~~~~~
`sh cflags "optimize='-O2'" pp_sort.o` pp_sort.c
CCCMD = cc -DPERL_CORE -c -fno-strict-aliasing -pipe - I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 - O2 -Wall -ansi -pedantic -W -Wextra -Wdeclaration-after-statement -Wendif- labels -Wc++-compat -DPERL_GCC_PEDANTIC
`sh cflags "optimize='-O2'" opmini.o` -DPERL_EXTERNAL_GLOB opmini.c
CCCMD = cc -DPERL_CORE -c -fno-strict-aliasing -pipe -vI/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 - O2 -Wall -ansi -pedantic -W -Wextra -Wdeclaration-after-statement -Wendif- labels -Wc++-compat -DPERL_GCC_PEDANTIC
opmini.c: In function 'Perl_list':
opmini.c:977:5: warning: this statement may fall through [-Wimplicit- fallthrough=]
if (!o->op_next && cUNOPo->op_first->op_type == OP_FLOP) {
^
opmini.c:981:5: note: here
case OP_LIST:
^~~~
opmini.c: In function 'Perl_mod':
opmini.c:1277:11: warning: this statement may fall through [-Wimplicit-v
fallthrough=]
PL_hints |= HINT_BLOCK_SCOPE;
opmini.c:1278:5: note: here
case OP_SASSIGN:
^~~~
opmini.c: In function 'Perl_fold_constants':
opmini.c:2119:40: warning: argument 'o' might be clobbered by 'longjmp' or 'vfork' [-Wclobbered]
Perl_fold_constants(pTHX_ register OP *o)
^
cc -L/usr/local/lib -o miniperl \
`echo gv.o toke.o perly.o op.o pad.o regcomp.o dump.o util.o mg.o reentr.o hv.o av.o perl.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o xsutils.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o | sed 's/ op.o / /'` \
miniperlmain.o opmini.o
pp.o: In function `Perl_pp_pow':
pp.c:(.text+0x2d84): undefined reference to `pow'
pp.o: In function `Perl_pp_modulo':
pp.c:(.text+0x3b80): undefined reference to `fmod'
pp.o: In function `Perl_pp_atan2':
pp.c:(.text+0x8884): undefined reference to `atan2'
pp.o: In function `Perl_pp_sin':
pp.c:(.text+0x8978): undefined reference to `sqrt'
pp.c:(.text+0x8a23): undefined reference to `log'
pp.c:(.text+0x8a4e): undefined reference to `cos'
pp.c:(.text+0x8afb): undefined reference to `sin'
pp.c:(.text+0x8b13): undefined reference to `exp'
collect2: error: ld returned 1 exit status
makefile:313: recipe for target 'miniperl' failed
make: *** [miniperl] Error 1
Is there a ready docker image?
If not how do I install on ubuntu or preferably on alpine or another light container.
Run the following commands in the terminal one after another.
sudo apt-get install perlbrew
perlbrew available
perlbrew install perl-5.8.9
If it fails to download, create a directory as shown below
mkdir -p perl5/perlbrew/dists
Try again the following command
perlbrew install perl-5.8.9
For more info , please refer this:
https://askubuntu.com/questions/425427/how-to-install-perl-php-mysql-and-ruby-packages-on-ubuntu
In case you don't want to use perlbrew, here is another way-
From https://stackoverflow.com/a/44441545/2001559
In your docker file -
RUN apt-get install -y gcc
ADD http://www.cpan.org/src/5.0/perl-5.8.9.tar.gz /shared
RUN tar -xzf perl-5.8.9.tar.gz
WORKDIR /shared/perl-5.8.9
RUN ./Configure -des -Dprefix=/opt/perl-5.8.9/localperl
RUN make
RUN make test
RUN make install
perl-5.8.0
I solved the issue when created 2 directories:
mkdir -p /home/<username>/perl5/perlbrew/dists/
mkdir -p /home/<username>/perl5/perlbrew/build/perl-5.8.0
Gave rwx-rwx-rwx (to avoid any problems with the access):
chmod -Rf 0777 /home/<username>/perl5/perlbrew/dists
chmod -Rf 0777 /home/<username>/perl5/perlbrew/build/perl-5.8.0
I'm trying to use MinGW gfortran with MATLAB R2019a on Windows 10 by writing a mexopts XML file based on existing XML files. I have cygwin installed with MinGW gcc, and I've been able to run mex -setup referencing the XML file successfully. When I try to compile the timestwo.F file to test the setup (using mex -R2018a timestwo.F90), I get a bunch of errors:
Building with 'cygwin MinGW64 Compiler (Fortran)'.
C:\cygwin64\bin\x86_64-w64-mingw32-gfortran -c -DMX_COMPAT_64 -DMATLAB_MEXCMD_RELEASE=R2018a -DUSE_MEX_CMD -I"C:\Program Files\MATLAB\R2019a\extern\include" -I"C:\Program Files\MATLAB\R2019a\simulink\include" -I"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64" -fexceptions -fbackslash -fPIC -fno-omit-frame-pointer -O3 -mtune=native "C:\cygwin64\home\user\MATLAB\timestwo.F90" -o C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o
f951: Warning: Nonexistent include directory ‘C:\Program Files\MATLAB\R2019a\simulink\include’ [-Wmissing-include-dirs]
C:\cygwin64\bin\x86_64-w64-mingw32-gfortran -c -DMX_COMPAT_64 -DMATLAB_MEXCMD_RELEASE=R2018a -DUSE_MEX_CMD -I"C:\Program Files\MATLAB\R2019a\extern\include" -I"C:\Program Files\MATLAB\R2019a\simulink\include" -I"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64" -fexceptions -fbackslash -fPIC -fno-omit-frame-pointer -O3 -mtune=native "C:\Program Files\MATLAB\R2019a\extern\version\fortran_mexapi_version.F" -o C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\fortran_mexapi_version.o
f951: Warning: Nonexistent include directory ‘C:\Program Files\MATLAB\R2019a\simulink\include’ [-Wmissing-include-dirs]
C:\cygwin64\bin\x86_64-w64-mingw32-gfortran -pthread -shared -O3 -mtune=native -Wl,--version-script,"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64\fortran_exportsmexfileversion.map" C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\fortran_mexapi_version.o -Wl,-L"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64" -llibmx -llibmex -llibmat -lm -L"C:\cygwin64\lib\gcc\x86_64-w64-mingw32\7.4.0" -lgfortran -o timestwo.mexw64
Error using mex
C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o:timestwo.F90:(.text+0x47): undefined reference to
`mxisnumeric800_'
C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o:timestwo.F90:(.text+0x6a): undefined reference to
`mexerrmsgidandtxt800_'
C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o:timestwo.F90:(.text+0x72): undefined reference to
`mxgetdoubles800_'
C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o:timestwo.F90:(.text+0x7d): undefined reference to `mxgetm800_'
C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o:timestwo.F90:(.text+0x8c): undefined reference to `mxgetn800_'
C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o:timestwo.F90:(.text+0xa6): undefined reference to
`mxcopyptrtoreal8800_'
C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o:timestwo.F90:(.text+0xba): undefined reference to
`mxcreatedoublematrix800_'
C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o:timestwo.F90:(.text+0xc4): undefined reference to
`mxgetdoubles800_'
C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o:timestwo.F90:(.text+0xe5): undefined reference to
`mxcopyreal8toptr800_'
C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o:timestwo.F90:(.text+0x10d): undefined reference to
`mexerrmsgidandtxt800_'
C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o:timestwo.F90:(.text+0x13b): undefined reference to
`mexerrmsgidandtxt800_'
collect2: error: ld returned 1 exit status
Here's my source:
! Gateway routine
#include "fintrf.h"
subroutine mexFunction(nlhs, plhs, nrhs, prhs)
implicit none
mwPointer plhs(*), prhs(*)
integer nlhs, nrhs
! Declarations
mwPointer mxGetDoubles
mwPointer mxCreateDoubleMatrix
integer mxIsNumeric
mwPointer mxGetM, mxGetN
mwPointer x_ptr, y_ptr
mwPointer mrows, ncols
mwSize size
! Declare variables for computational routine
real*8 x_input, y_output
! Make sure input is valid
if(nrhs /= 1) then
call mexErrMsgIdAndTxt ('MATLAB:timestwo:nInput', &
'One input required.')
elseif(nlhs > 1) then
call mexErrMsgIdAndTxt ('MATLAB:timestwo:nOutput', &
'Too many output arguments.')
endif
if(mxIsNumeric(prhs(1)) == 0) then
call mexErrMsgIdAndTxt ('MATLAB:timestwo:NonNumeric', &
'Input must be a number.')
endif
! Read input array
x_ptr = mxGetDoubles(prhs(1))
! Get size of array
mrows = mxGetM(prhs(1))
ncols = mxGetN(prhs(1))
size = mrows*ncols
! Create a Fortran array from the input
call mxCopyPtrToReal8(x_ptr,x_input,size)
! Prepare a matrix for output
plhs(1) = mxCreateDoubleMatrix(mrows,ncols,0)
y_ptr = mxGetDoubles(plhs(1))
call timestwo(y_output, x_input)
! copy results to output argument
call mxCopyReal8ToPtr(y_output,y_ptr,size)
return
end
subroutine timestwo(y_output, x_input)
real*8 x_input, y_output
y_output = 2.0*x_input
return
end
The output is the same if I try with the included matlabroot\extern\examples\refbook\timestwo.F fixed-form version.
My options file details (first part of output from mex -v -R2018a timestwo.F90)
Compiler location: C:\cygwin64
Options file: C:\Users\user\AppData\Roaming\MathWorks\MATLAB\R2019a\mex_FORTRAN_win64.xml
CMDLINE2 : C:\cygwin64\bin\x86_64-w64-mingw32-gfortran -pthread -shared -O3 -mtune=native -Wl,--version-script,"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64\fortran_exportsmexfileversion.map" C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\fortran_mexapi_version.o -Wl,-L"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64" -llibmx -llibmex -llibmat -lm -L"C:\cygwin64\lib\gcc\x86_64-w64-mingw32\7.4.0" -lgfortran -o timestwo.mexw64
FC : C:\cygwin64\bin\x86_64-w64-mingw32-gfortran
DEFINES : -DMX_COMPAT_64 -DMATLAB_MEXCMD_RELEASE=R2018a -DUSE_MEX_CMD
FFLAGS : -fexceptions -fbackslash -fPIC -fno-omit-frame-pointer
INCLUDE : -I"C:\Program Files\MATLAB\R2019a\extern\include" -I"C:\Program Files\MATLAB\R2019a\simulink\include" -I"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64"
FOPTIMFLAGS : -O3 -mtune=native
FDEBUGFLAGS : -g -Wall
LDF : C:\cygwin64\bin\x86_64-w64-mingw32-gfortran
LDFLAGS : -pthread
LDTYPE : -shared
LINKEXPORT : -Wl,--version-script,"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64\fexport.map"
LINKEXPORTVER : -Wl,--version-script,"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64\fortran_exportsmexfileversion.map"
LINKLIBS : -Wl,-L"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64" -llibmx -llibmex -llibmat -lm -L"C:\cygwin64\lib\gcc\x86_64-w64-mingw32\7.4.0" -lgfortran
LDOPTIMFLAGS : -O3 -mtune=native
LDDEBUGFLAGS : -g -Wall
OBJEXT : .o
LDEXT : .mexw64
SETENV : set COMPILER=C:\cygwin64\bin\x86_64-w64-mingw32-gfortran
set COMPFLAGS=-fexceptions -fbackslash -fPIC -fno-omit-frame-pointer -DMX_COMPAT_64 -DMATLAB_MEXCMD_RELEASE=R2018a -DUSE_MEX_CMD
set OPTIMFLAGS=-O3 -mtune=native
set DEBUGFLAGS=-g -Wall
set LINKER=C:\cygwin64\bin\x86_64-w64-mingw32-gfortran
set LINKFLAGS=-pthread
set LINKDEBUGFLAGS=-pthread -shared -Wl,-L"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64" -llibmx -llibmex -llibmat -lm -L"C:\cygwin64\lib\gcc\x86_64-w64-mingw32\7.4.0" -lgfortran -Wl,--version-script,"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64\fexport.map"
set LDDEBUGFLAGS=-g -Wall
set NAME_OUTPUT=-o "%OUTDIR%%MEX_NAME%%MEX_EXT%%"
CYGWINROOT : C:\cygwin64
MATLABROOT : C:\Program Files\MATLAB\R2019a
ARCH : win64
SRC : "C:\cygwin64\home\user\MATLAB\timestwo.F90";"C:\Program Files\MATLAB\R2019a\extern\version\fortran_mexapi_version.F"
OBJ : C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o;C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\fortran_mexapi_version.o
OBJS : C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\fortran_mexapi_version.o
SRCROOT : C:\cygwin64\home\user\MATLAB\timestwo
DEF : C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.def
EXP : "timestwo.exp"
LIB : "timestwo.lib"
EXE : timestwo.mexw64
ILK : "timestwo.ilk"
MANIFEST : "timestwo.mexw64.manifest"
TEMPNAME : timestwo
EXEDIR :
EXENAME : timestwo
OPTIM : -O3 -mtune=native
LINKOPTIM : -O3 -mtune=native
CMDLINE1_0 : C:\cygwin64\bin\x86_64-w64-mingw32-gfortran -c -DMX_COMPAT_64 -DMATLAB_MEXCMD_RELEASE=R2018a -DUSE_MEX_CMD -I"C:\Program Files\MATLAB\R2019a\extern\include" -I"C:\Program Files\MATLAB\R2019a\simulink\include" -I"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64" -fexceptions -fbackslash -fPIC -fno-omit-frame-pointer -O3 -mtune=native "C:\cygwin64\home\user\MATLAB\timestwo.F90" -o C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\timestwo.o
CMDLINE1_1 : C:\cygwin64\bin\x86_64-w64-mingw32-gfortran -c -DMX_COMPAT_64 -DMATLAB_MEXCMD_RELEASE=R2018a -DUSE_MEX_CMD -I"C:\Program Files\MATLAB\R2019a\extern\include" -I"C:\Program Files\MATLAB\R2019a\simulink\include" -I"C:\Program Files\MATLAB\R2019a\extern\lib\win64\mingw64" -fexceptions -fbackslash -fPIC -fno-omit-frame-pointer -O3 -mtune=native "C:\Program Files\MATLAB\R2019a\extern\version\fortran_mexapi_version.F" -o C:\Users\user\AppData\Local\Temp\mex_62691295256641_4248\fortran_mexapi_version.o
It seems like the mex-specific types like mwPointer defined in fintrf.h aren't being defined, even though I've included its location. Why are these types not recognized?
i tried to build the mod_tile as in the link
then i was getting the same error
and tried came got the fix from this forum
i exported these
export CXXFLAGS="$(mapnik-config --cflags)"
export LDFLAGS="$(mapnik-config --ldflags)"
adding #include at the top of src/gen_tile.cpp
and changed the Makefile with --std=gnu++11
and i'm new to the linux and the cpp
Making all in iniparser3.0b
make[1]: Entering directory `/root/src/mod_tile/iniparser3.0b'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/root/src/mod_tile/iniparser3.0b'
make[1]: Entering directory `/root/src/mod_tile'
depbase=`echo src/gen_tile.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H -I. -I./includes -I/usr/include/freetype2 -I/usr/local/include -I/usr/local/include/mapnik/agg -I/opt/PostgreSQL/9.3/include -I/usr/include -I/usr/include/freetype2 -I/usr/include/libxml2 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/libpng12 -I/usr/include -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libdrm -I/usr/include/libpng12 -DSYSTEM_LIBINIPARSER=0 -I/usr/local/include -I/usr/local/include/mapnik/agg -I/opt/PostgreSQL/9.3/include -I/usr/include -I/usr/include/freetype2 -I/usr/include/libxml2 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/libpng12 -DSHAPE_MEMORY_MAPPED_FILE -DBIGINT -DBOOST_REGEX_HAS_ICU -DHAVE_JPEG -DMAPNIK_USE_PROJ4 -DHAVE_PNG -DHAVE_TIFF -DLINUX -DMAPNIK_THREADSAFE -DBOOST_SPIRIT_NO_PREDEFINED_TERMINALS=1 -DBOOST_PHOENIX_NO_PREDEFINED_TERMINALS=1 -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DNDEBUG -DHAVE_CAIRO -DGRID_RENDERER -DHAVE_LIBXML2 -std=c++11 -Wall -Wsign-compare -pthread -ftemplate-depth-300 -Wno-pragmas -O3 -MT src/gen_tile.o -MD -MP -MF $depbase.Tpo -c -o src/gen_tile.o src/gen_tile.cpp &&\
mv -f $depbase.Tpo $depbase.Po
src/gen_tile.cpp: In function ‘void parameterize_map_max_connections(mapnik::Map&, int)’:
src/gen_tile.cpp:180:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < m.layer_count(); i++) {
^
src/gen_tile.cpp:181:22: error: ‘class mapnik::Map’ has no member named ‘getLayer’
layer& l = m.getLayer(i);
^
src/gen_tile.cpp:182:43: error: invalid use of incomplete type ‘class mapnik::datasource’
parameters params = l.datasource()->params();
^
In file included from src/gen_tile.cpp:1:0:
/usr/local/include/mapnik/layer.hpp:37:7: error: forward declaration of ‘class mapnik::datasource’
class datasource;
^
src/gen_tile.cpp:188:9: error: ‘shared_ptr’ is not a member of ‘boost’
boost::shared_ptr<datasource> ds = datasource_cache::instance().create(params);
^
src/gen_tile.cpp:188:9: note: suggested alternative:
In file included from /usr/include/c++/4.8/bits/shared_ptr.h:52:0,
from /usr/include/c++/4.8/memory:82,
from /usr/local/include/mapnik/layer.hpp:32,
from src/gen_tile.cpp:1:
/usr/include/c++/4.8/bits/shared_ptr_base.h:261:11: note: ‘std::shared_ptr’
class shared_ptr;
^
src/gen_tile.cpp:188:37: error: expected primary-expression before ‘>’ token
boost::shared_ptr<datasource> ds = datasource_cache::instance().create(params);
^
src/gen_tile.cpp:188:39: error: ‘ds’ was not declared in this scope
boost::shared_ptr<datasource> ds = datasource_cache::instance().create(params);
^
src/gen_tile.cpp: In function ‘protoCmd render(xmlmapconfig*, int, int, int, char*, metaTile&)’:
src/gen_tile.cpp:259:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (yy = 0; yy < render_size_ty; yy++) {
^
src/gen_tile.cpp:260:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (xx = 0; xx < render_size_tx; xx++) {
^
make[1]: *** [src/gen_tile.o] Error 1
make[1]: Leaving directory `/root/src/mod_tile'
make: *** [all-recursive] Error 1
Please let me know anything i did wrong in the flow?
i am using this code
https://github.com/springmeyer/mod_tile
to build mod_tile now its working fine.
So I have been trying to compile this code using mex to on avail. The issue is it can not seem to find lstdc++ and lpthread and libm are for whatever reason incompatible. My /usr/lib32 folder looks like the following:
iggy#ThinkpadX1:~/Applications/Matlab_2012a/bin$ ls /usr/lib32/
crt1.o libanl.so libc_nonshared.a libg.a libmcheck.a libnss_files.so libpthread.so librt.so libz.so.1
crti.o libBrokenLocale.a libcrypt.a libgcc_s.so.1 libm.so libnss_hesiod.so libquadmath.so.0 libstdc++.so.6 libz.so.1.2.3.4
crtn.o libBrokenLocale.so libcrypt.so libgomp.so.1 libnsl.a libnss_nisplus.so libquadmath.so.0.0.0 libstdc++.so.6.0.16 Mcrt1.o
gconv libbsd-compat.a libc.so libgomp.so.1.0.0 libnsl.so libnss_nis.so libresolv.a libthread_db.so Scrt1.o
gcrt1.o libc.a libdl.a libieee.a libnss_compat.so libpthread.a libresolv.so libutil.a
libanl.a libcidn.so libdl.so libm.a libnss_dns.so libpthread_nonshared.a librt.a libutil.so
And the errors I am recieving are the following:
K>> make_csolve
**************************************************************************
Warning: Neither -compatibleArrayDims nor -largeArrayDims is selected.
Using -compatibleArrayDims. In the future, MATLAB will require
the use of -largeArrayDims and remove the -compatibleArrayDims
option. For more information, see:
http://www.mathworks.com/help/techdoc/matlab_external/bsflnue-1.html
**************************************************************************
/home/iggy/Applications/Matlab_2012a/bin/mex: 1: /home/iggy/Applications/Matlab_2012a/bin/util/oscheck.sh: /lib64/libc.so.6: not found
/home/iggy/Applications/Matlab_2012a/bin/mex: 1: /home/iggy/Applications/Matlab_2012a/bin/util/oscheck.sh: /lib64/libc.so.6: not found
-> mexopts.sh sourced from directory (DIR = $MATLAB/bin)
FILE = /home/iggy/Applications/Matlab_2012a/bin/mexopts.sh
----------------------------------------------------------------
-> MATLAB = /home/iggy/Applications/Matlab_2012a
-> CC = gcc-4.4
-> CC flags:
CFLAGS = -ansi -D_GNU_SOURCE -fexceptions -fPIC -fno-omit-frame-pointer -pthread
CDEBUGFLAGS = -g
COPTIMFLAGS = -O -DNDEBUG
CLIBS = -Wl,-rpath-link,/home/iggy/Applications/Matlab_2012a/bin/glnxa64 -L/usr/lib32 -L/home/iggy/Applications/Matlab_2012a/bin/glnxa64 -lmx -lmex -lmat -lm -lstdc++
arguments = -DMX_COMPAT_32
-> CXX = g++-4.4
-> CXX flags:
CXXFLAGS = -ansi -D_GNU_SOURCE -fPIC -fno-omit-frame-pointer -pthread
CXXDEBUGFLAGS = -g
CXXOPTIMFLAGS = -O -DNDEBUG
CXXLIBS = -Wl,-rpath-link,/home/iggy/Applications/Matlab_2012a/bin/glnxa64 -L/home/iggy/Applications/Matlab_2012a/bin/glnxa64 -lmx -lmex -lmat -lm
arguments = -DMX_COMPAT_32
-> FC = gfortran
-> FC flags:
FFLAGS = -fexceptions -fbackslash -fPIC -fno-omit-frame-pointer
FDEBUGFLAGS = -g
FOPTIMFLAGS = -O
FLIBS = -Wl,-rpath-link,/home/iggy/Applications/Matlab_2012a/bin/glnxa64 -L/home/iggy/Applications/Matlab_2012a/bin/glnxa64 -lmx -lmex -lmat -lm
arguments = -DMX_COMPAT_32
-> LD = gcc-4.4
-> Link flags:
LDFLAGS = -pthread -shared -Wl,--version-script,/home/iggy/Applications/Matlab_2012a/extern/lib/glnxa64/mexFunction.map -Wl,--no-undefined
LDDEBUGFLAGS = -g
LDOPTIMFLAGS = -O
LDEXTENSION = .mexa64
arguments =
-> LDCXX =
-> Link flags:
LDCXXFLAGS =
LDCXXDEBUGFLAGS =
LDCXXOPTIMFLAGS =
LDCXXEXTENSION =
arguments =
----------------------------------------------------------------
-> gcc-4.4 -c -I/home/iggy/Applications/Matlab_2012a/extern/include -I/home/iggy/Applications/Matlab_2012a/simulink/include -DMATLAB_MEX_FILE -ansi -D_GNU_SOURCE -fexceptions -fPIC -fno-omit-frame-pointer -pthread -DMX_COMPAT_32 -O -DNDEBUG "csolve.c"
-> gcc-4.4 -c -I/home/iggy/Applications/Matlab_2012a/extern/include -I/home/iggy/Applications/Matlab_2012a/simulink/include -DMATLAB_MEX_FILE -ansi -D_GNU_SOURCE -fexceptions -fPIC -fno-omit-frame-pointer -pthread -DMX_COMPAT_32 -O -DNDEBUG "ldl.c"
-> gcc-4.4 -c -I/home/iggy/Applications/Matlab_2012a/extern/include -I/home/iggy/Applications/Matlab_2012a/simulink/include -DMATLAB_MEX_FILE -ansi -D_GNU_SOURCE -fexceptions -fPIC -fno-omit-frame-pointer -pthread -DMX_COMPAT_32 -O -DNDEBUG "matrix_support.c"
-> gcc-4.4 -c -I/home/iggy/Applications/Matlab_2012a/extern/include -I/home/iggy/Applications/Matlab_2012a/simulink/include -DMATLAB_MEX_FILE -ansi -D_GNU_SOURCE -fexceptions -fPIC -fno-omit-frame-pointer -pthread -DMX_COMPAT_32 -O -DNDEBUG "solver.c"
-> gcc-4.4 -c -I/home/iggy/Applications/Matlab_2012a/extern/include -I/home/iggy/Applications/Matlab_2012a/simulink/include -DMATLAB_MEX_FILE -ansi -D_GNU_SOURCE -fexceptions -fPIC -fno-omit-frame-pointer -pthread -DMX_COMPAT_32 -O -DNDEBUG "util.c"
-> gcc-4.4 -O -pthread -shared -Wl,--version-script,/home/iggy/Applications/Matlab_2012a/extern/lib/glnxa64/mexFunction.map -Wl,--no-undefined -o "csolve.mexa64" csolve.o ldl.o matrix_support.o solver.o util.o -Wl,-rpath-link,/home/iggy/Applications/Matlab_2012a/bin/glnxa64 -L/usr/lib32 -L/home/iggy/Applications/Matlab_2012a/bin/glnxa64 -lmx -lmex -lmat -lm -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib32/libm.so when searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib32/libm.a when searching for -lm
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib32/libpthread.so when searching for -lpthread
/usr/bin/ld: skipping incompatible /usr/lib32/libpthread.a when searching for -lpthread
collect2: ld returned 1 exit status
mex: link of ' "csolve.mexa64"' failed.
Error using mex (line 206)
Unable to complete successfully.
Error in make_csolve (line 10)
mex -v csolve.c ldl.c matrix_support.c solver.c util.c
Any advice would be greatly appreciated (I am on Ubuntu 12.04 64-bit running MATLAB R2012a).
The libraries in /use/lib32 are incompatible because they are the wrong architecture (32-bit instead of 64-bit). Try running mex -setup again first. I'm assuming you're using 64-bit MATLAB (check with ver) since there are glnxa64 folders in the current setup.
However, the real error seems to be the following:
/home/iggy/Applications/Matlab_2012a/bin/mex: 1: /home/iggy/Applications/Matlab_2012a/bin/util/oscheck.sh: /lib64/libc.so.6: not found
Since oscheck.sh fails to find /lib64/libc.so.6, you might need to go into the package manage and look for libc and libstdc++, install them and try again. But first try to make a link to any existing libc.so.6 in another folder. Typical locations for Ubuntu are below.
64-bit Ubuntu:
sudo ln -s /lib/x86_64-linux-gnu/libc.so.6 /lib64/libc.so.6
32-bit Ubuntu:
sudo ln -s /lib/i386-linux-gnu/libc.so.6 /lib/libc.so.6
everybody
I apologize for the massive length of this post.
I am having some issues compiling DBD::mysql on SunOS.
# /usr/perl5/bin/perlgcc Makefile.PL
I will use the following settings for compiling and testing:
cflags (mysql_config) = -I/usr/sfw/include/mysql -xstrconst -mt
embedded (mysql_config) =
ldflags (mysql_config) = -R/usr/sfw/lib -R/usr/sfw/lib/mysql
libs (mysql_config) = -L/usr/sfw/lib -L/usr/sfw/lib/mysql -lmysqlclient -lz -lposix4 -lcrypt -lgen -lsocket -lnsl -lm
mysql_config (guessed ) = mysql_config
nocatchstderr (default ) = 0
nofoundrows (default ) = 0
ssl (guessed ) = 0
testdb (default ) = test
testhost (default ) =
testpassword (default ) =
testsocket (default ) =
testuser (guessed ) =
Checking if your kit is complete...
Looks good
Using DBI 1.58 (for perl 5.008004 on sun4-solaris-64int) installed in /usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int/auto/DBI/
Writing Makefile for DBD::mysql
# /usr/sfw/bin/gmake
cp lib/DBD/mysql.pm blib/lib/DBD/mysql.pm
cp lib/DBD/mysql/GetInfo.pm blib/lib/DBD/mysql/GetInfo.pm
cp lib/DBD/mysql/INSTALL.pod blib/lib/DBD/mysql/INSTALL.pod
cp lib/Bundle/DBD/mysql.pm blib/lib/Bundle/DBD/mysql.pm
gcc -c -I/usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int/auto/DBI -I/usr/sfw/include/mysql -xstrconst -mt -DDBD_MYSQL_INSERT_ID_IS_GOOD -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO -O2 -fno-strict-aliasing -DVERSION=\"4.022\" -DXS_VERSION=\"4.022\" -fPIC "-I/usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE" dbdimp.c
gcc: language strconst not recognized
gcc: dbdimp.c: linker input file unused because linking not done
/usr/perl5/5.8.4/bin/perl -p -e "s/~DRIVER~/mysql/g" /usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int/auto/DBI/Driver.xst > mysql.xsi
/usr/perl5/5.8.4/bin/perl /usr/perl5/5.8.4/lib/ExtUtils/xsubpp -typemap /usr/perl5/5.8.4/lib/ExtUtils/typemap mysql.xs > mysql.xsc && mv mysql.xsc mysql.c
Warning: duplicate function definition 'do' detected in mysql.xs, line 242
Warning: duplicate function definition 'rows' detected in mysql.xs, line 752
gcc -c -I/usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int/auto/DBI -I/usr/sfw/include/mysql -xstrconst -mt -DDBD_MYSQL_INSERT_ID_IS_GOOD -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO -O2 -fno-strict-aliasing -DVERSION=\"4.022\" -DXS_VERSION=\"4.022\" -fPIC "-I/usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE" mysql.c
gcc: language strconst not recognized
gcc: mysql.c: linker input file unused because linking not done
Running Mkbootstrap for DBD::mysql ()
chmod 644 mysql.bs
rm -f blib/arch/auto/DBD/mysql/mysql.so
LD_RUN_PATH="/usr/sfw/lib:/usr/lib:/lib" /usr/perl5/5.8.4/bin/perl myld gcc -G dbdimp.o mysql.o -o blib/arch/auto/DBD/mysql/mysql.so -L/usr/sfw/lib -L/usr/sfw/lib/mysql -lmysqlclient -lz -lposix4 -lcrypt -lgen -lsocket -lnsl -lm
gcc: dbdimp.o: No such file or directory
gcc: mysql.o: No such file or directory
gmake: *** [blib/arch/auto/DBD/mysql/mysql.so] Error 1
Probably relevant information:
mysql_config --cflags
-I/usr/sfw/include/mysql -xstrconst -mt
mysql_config --libs
-R/usr/sfw/lib -R/usr/sfw/lib/mysql -L/usr/sfw/lib -L/usr/sfw/lib/mysql -lmysqlclient -lz -lposix4 -lcrypt -lgen -lsocket -lnsl -lm
file `which perl`
/usr/bin/perl: ELF 32-bit MSB executable SPARC Version 1, dynamically linked, stripped
# perl --version
This is perl, v5.8.4 built for sun4-solaris-64int
ldd /usr/sfw/bin/mysql
libcurses.so.1 => /lib/libcurses.so.1
libmysqlclient.so.12 => /usr/sfw/lib/libmysqlclient.so.12
libz.so.1 => /usr/lib/libz.so.1
librt.so.1 => /lib/librt.so.1
libcrypt_i.so.1 => /usr/lib/libcrypt_i.so.1
libgen.so.1 => /lib/libgen.so.1
libsocket.so.1 => /lib/libsocket.so.1
libnsl.so.1 => /lib/libnsl.so.1
libm.so.2 => /lib/libm.so.2
libCstd.so.1 => /usr/lib/libCstd.so.1
libCrun.so.1 => /usr/lib/libCrun.so.1
libw.so.1 => /lib/libw.so.1
libthread.so.1 => /lib/libthread.so.1
libc.so.1 => /lib/libc.so.1
libaio.so.1 => /lib/libaio.so.1
libmd.so.1 => /lib/libmd.so.1
libmp.so.2 => /lib/libmp.so.2
libscf.so.1 => /lib/libscf.so.1
libdoor.so.1 => /lib/libdoor.so.1
libuutil.so.1 => /lib/libuutil.so.1
/usr/lib/cpu/sparcv8plus/libCstd_isa.so.1
/platform/SUNW,SPARC-Enterprise-T5120/lib/libc_psr.so.1
/platform/SUNW,SPARC-Enterprise-T5120/lib/libmd_psr.so.1
# perl -V
Summary of my perl5 (revision 5 version 8 subversion 4) configuration:
Platform:
osname=solaris, osvers=2.10, archname=sun4-solaris-64int
uname='sunos localhost 5.10 sun4u sparc SUNW,Ultra-2'
config_args=''
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=define use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xarch=v8 -D_TS_ERRNO',
optimize='-xO3 -xspace -xildoff',
cppflags=''
ccversion='Sun WorkShop', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=87654321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='cc', ldflags =''
libpth=/lib /usr/lib /usr/ccs/lib
libs=-lsocket -lnsl -ldl -lm -lc
perllibs=-lsocket -lnsl -ldl -lm -lc
libc=/lib/libc.so, so=so, useshrplib=true, libperl=libperl.so
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-R /usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE'
cccdlflags='-KPIC', lddlflags='-G'
Characteristics of this binary (from libperl):
Compile-time options: USE_64_BIT_INT USE_LARGE_FILES
Locally applied patches:
22667 The optree builder was looping when constructing the ops ...
22715 Upgrade to FileCache 1.04
22733 Missing copyright in the README.
22746 fix a coredump caused by rv2gv not fully converting a PV ...
22755 Fix 29149 - another UTF8 cache bug hit by substr.
22774 [perl #28938] split could leave an array without ...
22775 [perl #29127] scalar delete of empty slice returned garbage
22776 [perl #28986] perl -e "open m" crashes Perl
22777 add test for change #22776 ("open m" crashes Perl)
22778 add test for change #22746 ([perl #29102] Crash on assign ...
22781 [perl #29340] Bizarre copy of ARRAY make sure a pad op's ...
22796 [perl #29346] Double warning for int(undef) and abs(undef) ...
22818 BOM-marked and (BOMless) UTF-16 scripts not working
22823 [perl #29581] glob() misses a lot of matches
22827 Smoke [5.9.2] 22818 FAIL(F) MSWin32 WinXP/.Net SP1 (x86/1 cpu)
22830 [perl #29637] Thread creation time is hypersensitive
22831 improve hashing algorithm for ptr tables in perl_clone: ...
22839 [perl #29790] Optimization busted: '#a = "b", sort #a' ...
22850 [PATCH] 'perl -v' fails if local_patches contains code snippets
22852 TEST needs to ignore SCM files
22886 Pod::Find should ignore SCM files and dirs
22888 Remove redundant %SIG assignments from FileCache
23006 [perl #30509] use encoding and "eq" cause memory leak
23074 Segfault using HTML::Entities
23106 Numeric comparison operators mustn't compare addresses of ...
23320 [perl #30066] Memory leak in nested shared data structures ...
23321 [perl #31459] Bug in read()
27722 perlio.c breaks on Solaris/gcc when > 256 FDs are available
SPRINTF0 - fixes for sprintf formatting issues - CVE-2005-3962
6663288 Upgrade to CGI.pm 3.33
REGEXP0 - fix for UTF-8 recoding in regexps - CVE-2007-5116
6758953 Perl Sys::Syslog can log messages with wrong severity
Built under solaris
Compiled at May 21 2009 03:59:02
#INC:
/usr/perl5/5.8.4/lib/sun4-solaris-64int
/usr/perl5/5.8.4/lib
/usr/perl5/site_perl/5.8.4/sun4-solaris-64int
/usr/perl5/site_perl/5.8.4
/usr/perl5/site_perl
/usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int
/usr/perl5/vendor_perl/5.8.4
/usr/perl5/vendor_perl
.
isainfo -v
64-bit sparcv9 applications
asi_blk_init vis2 vis
32-bit sparc applications
asi_blk_init vis2 vis v8plus div32 mul32
Any tips as how I should proceed, if possible in a step-by-step (for dummies) manner?
Thanks!
Try using a Sun compiler, which presumably compiled your mysql. Others have had this problem, too.