-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Building gmtmex on Linux #8
Comments
👋 Thanks for opening your first issue here! Please make sure you filled out the template with as much detail as possible. We appreciate that you took the time to contribute! |
I have had success building gmtmex following ahankak's instructions above, using MATLAB R2019a and GMT 6.1.0_58a5b88_2019.09. In my case, MATLAB and GMT are in the standard installation locations. The following commands worked for me, hopefully they may help others:
To run MATLAB with gmtmex capabilities, I have to perform the same library modifications I tried for some time to use MATLAB's setenv functions to get these libraries working, but with no luck. I also tried putting the export commands in my .profile, but that also did not seem to work. The only way I can get MATLAB to start in an automated sense is to make a shell script:
Hopefully someone with a little more MATLAB experience can figure out a way to include these library modifications in the startup.m file, I tried a bit but had no luck. In the past, I have been using GMT through MATLAB by invoking the following The new gmtmex functionality seems like a great improvement over this type of tedious coding, I hope we can smooth out the Linux compatibility with a little effort from the community. |
While searching for documentation regarding building gmtmex on Linux, I noticed that the readme was looking for volunteers. With the steps outlined below, I am able to get GMT to work with my MATLAB project on Ubuntu 18.04. I am sure there is a more elegant way of achieving this, however, I thought it best to share this solution, since it does appear to work well.
With both MATLAB R2019a and GMT Version 6.1.0_3ede8d1_2019.08.04 installed in /home, in the gmtmex directory cloned from GitHub:
Built gmtmex object file as
gcc -I$GMT_dir/include/gmt -I$MATLAB_dir/extern/include -O2 -Wall -m64 -fPIC -fno-strict-aliasing -std=c99 -DGMT_MATLAB -I$GMT_dir/include/gmt -c gmtmex.c
Built gmtmex_parser object file as
gcc -I$GMT_dir/include/gmt -I$MATLAB_dir/extern/include -O2 -Wall -m64 -fPIC -fno-strict-aliasing -std=c99 -DGMT_MATLAB -I$GMT_dir/include/gmt -c gmtmex_parser.c
Compiled mex file as
$MATLAB_dir/bin/mex -DGMT_MATLAB -I$GMT_dir/include/gmt -I/$GMT_dir/include/gmt/lib -I$MATLAB_dir/extern/include gmtmex.o gmtmex_parser.o -L$GMT_dir/lib -lgmt -L$MATLAB_dir/bin/glnxa64 -lmx -lmex -output gmtmex.mexa64
Copied over the gmt.m and generated gmtmex.mexa64 files to $GMT_dir/bin, added $GMT_dir along with subfolders to MATLAB path.
In order to prevent runtime errors associated with MATLAB not being able to find shared libraries, launch MATLAB as:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GMT_dir/lib
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libtiff.so.5:/usr/lib/x86_64-linux-gnu/libstdc++.so.6
$MATLAB_dir/bin/matlab
I hope this proves to be helpful. Please let me know in case further tests are required.
The text was updated successfully, but these errors were encountered: