gpt4 book ai didi

c++ - 如何正确链接?

转载 作者:行者123 更新时间:2023-11-28 05:55:41 24 4
gpt4 key购买 nike

我对链接不是很熟悉,尤其是在 *nix/Mac 上。

我正在尝试手动链接二进制文件以执行一些测试。我有 2 套库,我需要链接我的二进制文件:第一个库安装在/usr/local/lib 中,它被称为 cppunit,第二个库安装在 ~/mylib/lib 中,它被称为 libmylib。

所以我抓取链接命令对其进行相应修改并尝试运行二进制文件。不幸的是,我收到错误消息:

dyld:未加载库:/usr/local/lib/libmylib

不幸的是,我认为我无法修改链接命令,使其显示为:

-L/usr/local/lib/cppunit -L~/mylib/lib/mylib

那么我该如何修改链接命令,以便链接器在其位置找到库?

这是我尝试过的完整链接命令:

g++ -mmacosx-version-min=10.6 -o test_gui   test_gui_asserthelper.o test_gui_test.o test_gui_testableframe.o test_gui_rect.o test_gui_size.o test_gui_point.o test_gui_region.o test_gui_bitmap.o test_gui_colour.o test_gui_desktopenv.o test_gui_ellipsization.o test_gui_measuring.o test_gui_affinematrix.o test_gui_boundingbox.o test_gui_config.o test_gui_bitmapcomboboxtest.o test_gui_bitmaptogglebuttontest.o test_gui_bookctrlbasetest.o test_gui_buttontest.o test_gui_checkboxtest.o test_gui_checklistboxtest.o test_gui_choicebooktest.o test_gui_choicetest.o test_gui_comboboxtest.o test_gui_dataviewctrltest.o test_gui_datepickerctrltest.o test_gui_frametest.o test_gui_gaugetest.o test_gui_gridtest.o test_gui_headerctrltest.o test_gui_htmllboxtest.o test_gui_hyperlinkctrltest.o test_gui_itemcontainertest.o test_gui_label.o test_gui_listbasetest.o test_gui_listbooktest.o test_gui_listboxtest.o test_gui_listctrltest.o test_gui_listviewtest.o test_gui_markuptest.o test_gui_notebooktest.o test_gui_ownerdrawncomboboxtest.o test_gui_pickerbasetest.o test_gui_pickertest.o test_gui_radioboxtest.o test_gui_radiobuttontest.o test_gui_rearrangelisttest.o test_gui_richtextctrltest.o test_gui_searchctrltest.o test_gui_simplebooktest.o test_gui_slidertest.o test_gui_spinctrldbltest.o test_gui_spinctrltest.o test_gui_textctrltest.o test_gui_textentrytest.o test_gui_togglebuttontest.o test_gui_toolbooktest.o test_gui_treebooktest.o test_gui_treectrltest.o test_gui_treelistctrltest.o test_gui_virtlistctrltest.o test_gui_webtest.o test_gui_windowtest.o test_gui_dialogtest.o test_gui_clone.o test_gui_evtlooptest.o test_gui_propagation.o test_gui_keyboard.o test_gui_exec.o test_gui_fonttest.o test_gui_image.o test_gui_rawbmp.o test_gui_htmlparser.o test_gui_htmlwindow.o test_gui_accelentry.o test_gui_menu.o test_gui_guifuncs.o test_gui_selstoretest.o test_gui_garbage.o test_gui_safearrayconverttest.o test_gui_settings.o test_gui_socket.o test_gui_boxsizer.o test_gui_wrapsizer.o test_gui_toplevel.o test_gui_valnum.o test_gui_clientsize.o test_gui_setsize.o test_gui_xrctest.o    -L/Users/AlenaKorot/wxWidgets3.0/buildMac/lib -ldl  -arch i386 -framework IOKit -framework Carbon -framework Cocoa -framework AudioToolbox -framework System -framework OpenGL   -lwx_osx_cocoau_webview-3.0 -lwx_osx_cocoau_richtext-3.0  -lwx_osx_cocoau_media-3.0 -framework QTKit -lwx_osx_cocoau_xrc-3.0  -lwx_baseu_xml-3.0 -lexpat -lwx_osx_cocoau_adv-3.0  -lwx_osx_cocoau_html-3.0  -lwx_osx_cocoau_core-3.0  -lwx_baseu_net-3.0  -lwx_baseu-3.0    -lwxtiff-3.0 -lwxjpeg-3.0 -lwxpng-3.0  -framework WebKit  -lwxregexu-3.0   -L/usr/local/lib -lcppunit -arch i386 -framework IOKit -framework Carbon -framework Cocoa -framework AudioToolbox -framework System -framework OpenGL  -lz -lpthread -liconv  -lz -lpthread -liconv

最佳答案

本质上,问题是您的库不在 g++ 的默认库路径中。您必须明确地将它添加到 g++ 的参数列表中才能知道它在哪里。

1)添加mylib编译源

通常这是一个 .a(编译源存档)或 .o(编译源)文件。找出它在“mylib”库中的位置,并将其添加到您的参数列表中,就像列出其他 .o 文件一样。

g++ <blah blah> -o myfile /home/username/mylib/mylib.o

当您开始包含库中的内容时,如果包含的 header 不在您的 g++ 参数列表中,您将遇到编译错误。

2) 添加“mylib” header 包括

在 mylib 目录中查找 include 目录。如果不添加它,每当您尝试从库中#include 某些内容时,都会出现编译错误。

使用 -I 标志将其添加到路径中。像这样:

g++ <blah blah> -I/home/username/mylib/include

最后,如果您不使用 makefile 进行编译,我建议您为您的目标构建一个简单的 makefile。

关于c++ - 如何正确链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34194200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com