如何将外部库包含到 omnetpp Makefile
How to include external library to omnetpp Makefile
我是 omnetpp
的新手。在我的源文件中,我包含 zmq.h
header 并且我可以使用 opp_makemake --make-so -f --deep
成功制作 Makefile
接下来运行ning make
也不报错
Creating shared library: out/gcc-release//libtictoc_r.so
所以我期待 zmq
库已经链接。
然而,当我 运行
opp_run -l tictoc_r
我明白了
<!> Error: Cannot load library 'libtictoc_r.so': ./libtictoc_r.so: undefined symbol: zmq_strerror
因此我怀疑 zmq
库是否链接正确。
顺便说一句,zmq
的 header 文件位于标准目录中,即
find /usr/include/ -name "*zmq*"
returns
/usr/include/zmq.h
/usr/include/zmq_utils.h
/usr/include/zmq_addon.hpp
/usr/include/zmq.hpp
我该如何解决我的问题?
使用头文件并不能说明实际共享对象文件的位置。您必须将 -lzmq
(或调用任何库)添加到项目中的链接器标志。
最简单的方法是在源文件夹(生成Makefile的地方)中创建一个makefrag
文件并添加
LDFLAGS += -lzmq
给它。生成的 Makefile
将包含 makefrag
文件,并且可以将其添加到链接器标志中。 (samples/sockets
示例也这样做)
您还可以在 IDE 的项目属性对话框中添加所需的额外链接器标志。
我是 omnetpp
的新手。在我的源文件中,我包含 zmq.h
header 并且我可以使用 opp_makemake --make-so -f --deep
成功制作 Makefile
接下来运行ning make
也不报错
Creating shared library: out/gcc-release//libtictoc_r.so
所以我期待 zmq
库已经链接。
然而,当我 运行
opp_run -l tictoc_r
我明白了
<!> Error: Cannot load library 'libtictoc_r.so': ./libtictoc_r.so: undefined symbol: zmq_strerror
因此我怀疑 zmq
库是否链接正确。
顺便说一句,zmq
的 header 文件位于标准目录中,即
find /usr/include/ -name "*zmq*"
returns
/usr/include/zmq.h
/usr/include/zmq_utils.h
/usr/include/zmq_addon.hpp
/usr/include/zmq.hpp
我该如何解决我的问题?
使用头文件并不能说明实际共享对象文件的位置。您必须将 -lzmq
(或调用任何库)添加到项目中的链接器标志。
最简单的方法是在源文件夹(生成Makefile的地方)中创建一个makefrag
文件并添加
LDFLAGS += -lzmq
给它。生成的 Makefile
将包含 makefrag
文件,并且可以将其添加到链接器标志中。 (samples/sockets
示例也这样做)
您还可以在 IDE 的项目属性对话框中添加所需的额外链接器标志。