Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot make gunplot on osx yosemite. Undefined symbols

Tags:

macos

lua

gnuplot

I try to make gunplot 5.0.0 under osx yosemite(10.10.4), and it comes with errors:

$ make
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in config
make[2]: Nothing to be done for `all'.
Making all in m4
make[2]: Nothing to be done for `all'.
Making all in term
make[2]: Nothing to be done for `all'.
Making all in src
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in wxterminal
make[4]: Nothing to be done for `all'.
Making all in qtterminal
make[4]: Nothing to be done for `all'.
c++  -g -O2   -o gnuplot alloc.o axis.o breaders.o boundary.o color.o command.o contour.o datablock.o datafile.o dynarray.o eval.o external.o fit.o gadgets.o getcolor.o graph3d.o graphics.o help.o hidden3d.o history.o internal.o interpol.o libcerf.o matrix.o misc.o mouse.o multiplot.o parse.o plot.o plot2d.o plot3d.o pm3d.o readline.o save.o scanner.o set.o show.o specfun.o standard.o stats.o stdfn.o tables.o tabulate.o term.o time.o unset.o util.o util3d.o variable.o version.o     -lreadline  -lncurses  -lz    -llua -liconv 
Undefined symbols for architecture x86_64:
  "_luaL_checkint", referenced from:
      _LUA_GP_int_error in term.o
      _LUA_GP_int_warn in term.o
     (maybe you meant: _luaL_checkinteger)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[4]: *** [gnuplot] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Seems like something related to lua. This is my lua env:

$ lua -v
Lua 5.3.0  Copyright (C) 1994-2015 Lua.org, PUC-Rio

I don't understand the make's output, please help!

like image 330
bayinamy Avatar asked Sep 27 '22 05:09

bayinamy


2 Answers

It appears that the module/application you are compiling is not Lua 5.3-compatible. It uses luaL_checkint, but Lua 5.3 is using luaL_checkinteger. You need to update the module or use the compatibility switch LUA_COMPAT_APIINTCASTS (LUA_COMPAT_5_2 should work as well as it includes LUA_COMPAT_APIINTCASTS).

like image 108
Paul Kulchenko Avatar answered Nov 15 '22 10:11

Paul Kulchenko


I had the same issue when using macports and trying to compile gnuplot (as a dependency for latex2rtf). In the end the fix was relatively straightforward...

In the version of gnuplot I needed (gnuplot-5.0.1), there are two references to luaL_checkint in the lua.trm file found in the term folder:

./term/lua.trm:      t_num = luaL_checkint(L, 1);
./term/lua.trm:      t_num = luaL_checkint(L, 1);
./term/lua.trm:  token_cnt = luaL_checkinteger(L, 1);

Changing luaL_checkint to luaL_checkinteger did the trick. See Paul Kulchenko answer for the reason behind this compatibility issue.

like image 24
neilireson Avatar answered Nov 15 '22 10:11

neilireson