libTogl未定义的引用

use*_*789 5 gcc undefined-reference

我正在尝试安装netgen(从源代码构建).因此需要Togl,我通过它安装它

sudo apt-get install libtogl1 libtogl-dev
Run Code Online (Sandbox Code Playgroud)

输入'make'时,我收到以下错误消息:

/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libTogl.so: undefined reference to `Tk_InitStubs'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libTogl.so: undefined reference to `tkStubsPtr'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libTogl.so: undefined reference to `Tcl_InitStubs'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libTogl.so: undefined reference to `tclStubsPtr'
Run Code Online (Sandbox Code Playgroud)

也许Togl没有正确安装.这是32位64位发行吗?我该怎么做才能解决这个问题?

oll*_*zhu 5

这是链接到正确版本的Tcl和Tk的问题,正如@keltar所提到的那样.如果您的目标是从源代码构建Netgen,最好的办法是坚持使用netgen-5.3.1,它适用于tcl8.5和tk8.5.

我遇到了这个问题,因为当我跑步时sudo apt-get install tcl-dev tk-dev,apt-get为我提取了tcl8.6和tk8.6.(如果您在线搜索这些问题,您可以看到有时可以通过更新Tcl/Tk版本来解决这些链接问题.)我卸载了默认的tcl-dev和tk-dev软件包并安装了tcl8.5-dev和tk8.相反,5-dev.

一旦你拥有最适合的Tcl/Tk版本,就可以从源代码安装Netgen.例如,

./configure --with-tclconfig=/usr/lib/tcl8.5/ --with-tkconfig=/usr/lib/tk8.5/
make
make install
Run Code Online (Sandbox Code Playgroud)

  • 在OP指出这个问题两年多之后,最新版本的netgen仍然要求用户安装一个已弃用的Tcl // Tk版本.https://sourceforge.net/p/netgen-mesher/discussion/905306/thread/6b00b981/. (2认同)