我写了一些程序,并尝试使用 g++ 编译它们,因此,
$ g++ minIni.c device_datum.cpp fanuc_axis.cpp fanuc_path.cpp service.cpp condition.cpp cutting_tool.cpp string_buffer.cpp logger.cpp client.cpp server.cpp adapter.cpp fanuc_adapter.cpp FanucAdapter.cpp -L/usr/local/lib/ -lfwlib32 -lpthread -o adapter
我不断收到以下错误:
/usr/bin/ld: cannot find -lfwlib32
collect2: error: ld returned 1 exit status
fwlib32.h
是我要包含的库。共享对象文件 libfwlib32.so 存在于 /usr/local/lib
和 /usr/lib
中。但我无法链接到它。我已经尝试了类似问题提供的所有解决方案,包括
$ export LIBRARY_PATH=/usr/local/lib/
$ export LD_LIBRARY_PATH=/usr/local/lib
我也对/usr/lib
做了上面的操作,但还是报同样的错误。
我已尝试在命令行中使用 -L 选项,但仍然出现错误。
我什至创建了一个名为 lib
的新文件夹,将 libfwlib32.so.1.0.1
粘贴到其中并运行
$ ln -s ~/lib/libfwlib32.so.1.0.1 ~/lib/libfwlib32.so
在控制台上创建一个新的 .so 文件,并将 ~/lib
作为命令行上 -L 选项的参数。没什么区别。我正处于撕裂我的头发的地步,所以任何帮助将不胜感激。
非常感谢!
最佳答案
你应该把 -l 选项放在最后:
$ g++ minIni.c device_datum.cpp fanuc_axis.cpp fanuc_path.cpp service.cpp condition.cpp cutting_tool.cpp string_buffer.cpp logger.cpp client.cpp server.cpp adapter.cpp fanuc_adapter.cpp FanucAdapter.cpp -L/usr/local/lib/ -o adapter -lfwlib32 -lpthread
注意:请确保所有头文件和源文件都在同一个文件夹中。
关于c++ -/usr/bin/ld 找不到 -l<nameOfLibrary>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34037474/