【问题标题】:How to include external library to omnetpp Makefile如何将外部库包含到 omnetpp Makefile
【发布时间】:2022-02-01 17:48:55
【问题描述】:

我是omnetpp 的新手。在我的源文件中,我包含 zmq.h 标头,我可以成功地使 Makefileopp_makemake --make-so -f --deep
接下来,运行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 的头文件位于标准目录中,即 find /usr/include/ -name "*zmq*"
返回

/usr/include/zmq.h
/usr/include/zmq_utils.h
/usr/include/zmq_addon.hpp
/usr/include/zmq.hpp

我该如何解决我的问题?

【问题讨论】:

    标签: linker shared-libraries zeromq omnet++


    【解决方案1】:

    使用头文件并不能说明实际共享对象文件的位置。您必须将-lzmq(或任何调用库)添加到项目中的链接器标志中。

    最简单的方法是在源文件夹(生成Makefile的地方)创建一个makefrag文件并添加

    LDFLAGS += -lzmq
    

    到它。生成的Makefile 将包含makefrag 文件,并且可以添加到链接器标志中。 (samples/sockets 的例子也是这样做的)

    您还可以在 IDE 的项目属性对话框中添加所需的额外链接器标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      相关资源
      最近更新 更多