필터 지우기
필터 지우기

How to build mksqlite MEX file mksqlite.mexa64 in Linux?

조회 수: 3 (최근 30일)
R Sating
R Sating 2013년 9월 7일
답변: Frank Zalkow 2016년 8월 10일
Here is the build procedure:
Download and unzip source code for the latest release, for example at:
http://prdownload.berlios.de/mksqlite/mksqlite-1.12.zip
In mksqlite.cpp fix 'isprint' compile error at line 830:
Added:
#include <ctype.h>
After:
#include <string.h>
Find library implementing DLL utility functions dlopen, dlclose, dlsym, dlerror
-bash-4.0$ find /usr -name 'libdl.*'
/usr/lib64/libdl.so
Verify Matlab utility "mex" and Gnu C++ are available:
-bash-4.0$ which mex
/usr/local/MATLAB/R2012a/bin/mex
-bash-4.0$ which g++
/usr/lib64/ccache/g++
Build as follows, with working directory set to location of code:
-bash-4.0$ mex CXX=g++ CXX=g++ LD=g++ -lm -ldl -L /usr/lib64/libdl.a -output mksqlite.mexa64 mksqlite.cpp sqlite3.c
I was able to figure this out thanks to the tutorial:
"Creating, compiling and linking MATLAB executables (MEX files): a tutorial" by Peter Carbonetto
http://www.cs.ubc.ca/~pcarbo/mex-tutorial/index.html
  댓글 수: 2
Kaustubha Govind
Kaustubha Govind 2013년 9월 9일
It looks like you posted the solution as part of your question. Please separate it out and post as an answer and accept it, so that it is clear to the users of the forum that this question has been resolved.
Andreas Martin
Andreas Martin 2014년 2월 5일
...or contact the developers, when get into trouble... :-)

댓글을 달려면 로그인하십시오.

답변 (1개)

Frank Zalkow
Frank Zalkow 2016년 8월 10일
Is anyone getting it compiled in mksqlite version 2.3? (I am running Matlab R2016a under Ubuntu 16.04).
When doing your steps I still get this error message:
$ mex CXX=gcc CXX=gcc LD=gcc -lm -ldl -L/usr/lib/x86_64-linux-gnu/libdl.a -output mksqlite.mexa64 mksqlite.cpp sqlite/sqlite3.c
Building with 'g++'.
In file included from /home/username/dev/mksqlite/mksqlite.cpp:28:0:
/home/username/dev/mksqlite/sql_interface.hpp: In static member function ‘static void SQLiface::mexFcnWrapper(sqlite3_context*, int, sqlite3_value**, int)’:
/home/username/dev/mksqlite/sql_interface.hpp:870:67: warning: comparison between ‘enum mxClassID’ and ‘enum ValueMex::<anonymous>’ [-Wenum-compare]
/home/username/dev/mksqlite/sql_interface.hpp: In member function ‘bool SQLiface::bindParameter(int, ValueMex&, bool)’:
/home/username/dev/mksqlite/sql_interface.hpp:1129:47: warning: comparison between ‘enum mxClassID’ and ‘enum ValueMex::<anonymous>’ [-Wenum-compare]
/home/username/dev/mksqlite/mksqlite.cpp: In member function ‘bool Mksqlite::cmdTryHandleCreateFunction(const char*)’:
/home/username/dev/mksqlite/mksqlite.cpp:1065:33: error: strlwrwas not declared in this scope
/home/username/dev/mksqlite/mksqlite.cpp: In member function ‘bool Mksqlite::cmdTryHandleCreateAggregation(const char*)’:
/home/username/dev/mksqlite/mksqlite.cpp:1137:33: error: strlwrwas not declared in this scope
/home/username/dev/mksqlite/mksqlite.cpp: In member function ‘bool Mksqlite::cmdHandleSQLStatement()’:
/home/username/dev/mksqlite/mksqlite.cpp:2324:101: error: no matching function for call to ‘SQLiface::bindParameter(int, ValueMex, bool)’
/home/username/dev/mksqlite/mksqlite.cpp:2324:101: note: candidate is:
In file included from /home/username/dev/mksqlite/mksqlite.cpp:28:0:
/home/username/dev/mksqlite/sql_interface.hpp:1093:8: note: bool SQLiface::bindParameter(int, ValueMex&, bool)
/home/username/dev/mksqlite/sql_interface.hpp:1093:8: note: no known conversion for argument 2 from ‘ValueMex’ to ‘ValueMex&’
In file included from /home/username/dev/mksqlite/sql_builtin_functions.hpp:28:0,
from /home/username/dev/mksqlite/sql_interface.hpp:23,
from /home/username/dev/mksqlite/mksqlite.cpp:28:
/home/username/dev/mksqlite/deelx/deelx.h: In instantiation of ‘CHART* CRegexpT<CHART>::Replace(const CHART*, int, const CHART*, int, int&, int, int, MatchResult*, CContext*) const [with CHART = char; MatchResult = MatchResultT<0>]:
/home/username/dev/mksqlite/deelx/deelx.h:3814:166: required from ‘CHART* CRegexpT<CHART>::Replace(const CHART*, const CHART*, int, int, MatchResult*, CContext*) const [with CHART = char; MatchResult = MatchResultT<0>]
/home/username/dev/mksqlite/sql_builtin_functions.hpp:291:57: required from here
/home/username/dev/mksqlite/deelx/deelx.h:3962:17: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
/home/username/dev/mksqlite/deelx/deelx.h:3974:17: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
/home/username/dev/mksqlite/deelx/deelx.h:4032:13: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
/home/username/dev/mksqlite/deelx/deelx.h:4044:13: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
/home/username/dev/mksqlite/deelx/deelx.h:4052:13: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
Manually including a function definition for strlwr, like proposed here, leads to even more errors...

카테고리

Help CenterFile Exchange에서 Introduction to Installation and Licensing에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by