Static linking with dylib ld: library not found for -lcrt0.o collect2: error: ld returned 1 exit status
Static linking with dylib ld: library not found for -lcrt0.o collect2: error: ld returned 1 exit status
我正在用 gnu49 compile 编译一个 qt5 c++ 项目,同时 link 在 Mac OSX El Captitan 上用 c ++11 标志和常用的 qt 框架标志。该项目编译得很好,但为了使其在其他几台机器上更具可移植性,我正在尝试静态 link 几个动态库。
我在(静态 linked)库(例如 -static -lboost_thread
)之前添加了 -static 标志,如此处所述。
https://gcc.gnu.org/ml/gcc/2000-05/msg00517.html
但是,我收到以下错误。
ld: library not found for -lcrt0.o collect2: error: ld returned 1 exit status
我确认错误仅在尝试静态 link 而不是动态 linking 时出现。
您正在应用的 GCC's -static
option 是非位置的。它强制执行
所有库的静态 link年龄。你的 linkage 会失败,因为你的系统没有 libcrt0.o
的静态版本
您可能会将 GCC 的 static
选项与 ld
's -static
option 混淆(同义词:-Bstatic
、-dn
-non_shared
),
其中 是 位置。它仅影响命令行上的 后续 个库。它是的倒数
linker 的 -Bdynamic
选项(同义词:-dy
、-call_shared
)。
所以 link 只有库 -lfoo
、-lbar
...静态地,通过 GCC,您可以将 -Bstatic
传递给
link呃,就在你提到它们之前,-Bdynamic
就在它们之后:
-Wl,-Bstatic -lfoo -lbar -Wl,-Bdynamic
不要省略最后的 -Wl,-Bdynamic
,即使 -lbar
是你的库的最后一个,因为 GCC 会悄悄地附加标准库
到您的link年龄(如您所见)。
我正在用 gnu49 compile 编译一个 qt5 c++ 项目,同时 link 在 Mac OSX El Captitan 上用 c ++11 标志和常用的 qt 框架标志。该项目编译得很好,但为了使其在其他几台机器上更具可移植性,我正在尝试静态 link 几个动态库。
我在(静态 linked)库(例如 -static -lboost_thread
)之前添加了 -static 标志,如此处所述。
https://gcc.gnu.org/ml/gcc/2000-05/msg00517.html
但是,我收到以下错误。
ld: library not found for -lcrt0.o collect2: error: ld returned 1 exit status
我确认错误仅在尝试静态 link 而不是动态 linking 时出现。
GCC's -static
option 是非位置的。它强制执行
所有库的静态 link年龄。你的 linkage 会失败,因为你的系统没有 libcrt0.o
您可能会将 GCC 的 static
选项与 ld
's -static
option 混淆(同义词:-Bstatic
、-dn
-non_shared
),
其中 是 位置。它仅影响命令行上的 后续 个库。它是的倒数
linker 的 -Bdynamic
选项(同义词:-dy
、-call_shared
)。
所以 link 只有库 -lfoo
、-lbar
...静态地,通过 GCC,您可以将 -Bstatic
传递给
link呃,就在你提到它们之前,-Bdynamic
就在它们之后:
-Wl,-Bstatic -lfoo -lbar -Wl,-Bdynamic
不要省略最后的 -Wl,-Bdynamic
,即使 -lbar
是你的库的最后一个,因为 GCC 会悄悄地附加标准库
到您的link年龄(如您所见)。