Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用-nodefaultlibs编译会导致Linux系统调用的链接错误_Linux_System Calls_Libc++ - Fatal编程技术网

使用-nodefaultlibs编译会导致Linux系统调用的链接错误

使用-nodefaultlibs编译会导致Linux系统调用的链接错误,linux,system-calls,libc++,Linux,System Calls,Libc++,我需要使用自定义的libc++进行编译。因此,我将以下内容用于编译器标志: -nostdinc++ -isystem ${MY_LIBCXX_INC} 对于链接器标志,这是: -nodefaultlibs -L ${MY_LIBCXX_LIB} -lc++ -lc++abi -lm -lc -lgcc_s -lgcc 这会导致尝试使用#include和stat(path,buff)系统调用的任何调用的链接错误 如果将-nodefaultlibs替换为-stdlib=libc++,则不会出现

我需要使用自定义的libc++进行编译。因此,我将以下内容用于编译器标志:

-nostdinc++ -isystem ${MY_LIBCXX_INC}
对于链接器标志,这是:

-nodefaultlibs  -L ${MY_LIBCXX_LIB} -lc++ -lc++abi -lm -lc -lgcc_s -lgcc
这会导致尝试使用
#include
stat(path,buff)
系统调用的任何调用的链接错误

如果将
-nodefaultlibs
替换为
-stdlib=libc++
,则不会出现此链接错误

有人能解释为什么会这样吗?理想情况下,我希望强制执行
-nodefaultlibs
,以绝对确保默认libs(如libstdc++或其他内容)不会链接到

更多信息 下面是带有
-v
选项的链接器的详细错误:

clang: warning: argument unused during compilation: '-nostdinc++'
 "/usr/bin/ld" -export-dynamic -z relro --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o ../../output/bin/MavLinkTest /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/crt1.o /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/crtbegin.o -L/home/shitals/GitHubSrc/AirSim/llvm-build/output/lib -L/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../.. -L/usr/lib/llvm-3.9/bin/../lib -L/lib -L/usr/lib -lc++ -lm -lc -lgcc_s -lgcc CMakeFiles/MavLinkTest.dir/home/shitals/GitHubSrc/AirSim/MavLinkCom/MavLinkTest/main.cpp.o CMakeFiles/MavLinkTest.dir/home/shitals/GitHubSrc/AirSim/MavLinkCom/MavLinkTest/UnitTests.cpp.o CMakeFiles/MavLinkTest.dir/home/shitals/GitHubSrc/AirSim/MavLinkCom/MavLinkTest/Commands.cpp.o -lpthread ../../output/lib/libMavLinkCom.a -lc++abi -lpthread /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/crtend.o /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/crtn.o
../../output/lib/libMavLinkCom.a(FileSystem.cpp.o): In function `mavlink_utils::FileSystem::isDirectory(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)':
/home/shitals/GitHubSrc/AirSim/MavLinkCom/common_utils/FileSystem.cpp:144: undefined reference to `stat'
../../output/lib/libMavLinkCom.a(FileSystem.cpp.o): In function `mavlink_utils::FileSystem::exists(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)':
/home/shitals/GitHubSrc/AirSim/MavLinkCom/common_utils/FileSystem.cpp:158: undefined reference to `stat'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
clang:warning:编译期间未使用参数:'-nostinc++'
“/usr/bin/ld”-export dynamic-z relro--hash style=gnu--eh frame hdr-m elf_x86_64-export dynamic-dynamic linker/lib64/ld-linux-x86-64.so.2-o.././output/bin/MavLinkTest/usr/bin/./lib/gcc/x86_64-linux-gnu/5.4.0/../../../../../x86_-linux-gnu/crt1.o/usr/bin/../lib/gcc/x86-linux-gnu/x86.0/../../..//4.1-L/L/hom//homs/hitals/his/his/hitals/his/s/4.4.4.4.0/1/1/4/4/4/4/4/4/4/4/4/4/1////4/4/1/1/1/1/1/1/1/1/1/1/1/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8/8///////////////////8/8/8/8/8/8/8/8/8/8/8/8/8//8/-linux-gnu/5.4.0/../../../-L/usr/lib/llvm-3.9/bin//lib-L/usr/lib-lc++-lm-lc-lgcc_-lgcc-CMakeFiles/MavLinkTest.dir/home/shitals/GitHubSrc/AirSim/MavLinkCom/MavLinkTest/main.cpp.o CMakeFiles/MavLinkTest.dir/home/shitals/GitHubSrc/AirSim/MavLinkTest/UnitTests.cpp.oCMakeFiles/MavLinkTest.dir/home/shitals/GitHubSrc/AirSim/MavLinkCom/MavLinkTest/Commands.cpp.o-lpthread../。/output/lib/libMavLinkCom.a-lc++abi-lpthread/usr/bin/。/lib/gcc/x86-linux-gnu/5.4.0/crtend.o/usr/bin/。../lib/gcc/x86-linux-gnu 64-gnu/tn.o
../../output/lib/libMavLinkCom.a(FileSystem.cpp.o):在函数“mavlink_utils::FileSystem::isDirectory(std::u 1::basic_string)”中:
/home/shitals/GitHubSrc/AirSim/MavLinkCom/common_utils/FileSystem.cpp:144:对“stat”的未定义引用
../../output/lib/libMavLinkCom.a(FileSystem.cpp.o):在函数“mavlink_utils::FileSystem::exists(std::_1::basic_string)”中:
/home/shitals/GitHubSrc/AirSim/MavLinkCom/common_utils/FileSystem.cpp:158:对“stat”的未定义引用
叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)

您得到的
sys/stat.h
是否对应于您链接的
lc
?如果使用
clang
编译,请尝试
-###
-v
查看更多详细信息。哦,如果
$MY_LIBCXX_LIB
引用libc中的符号,则必须在链接行中紧跟其后。最后添加
-lc
或将其包装在
--start group
/
--end group
中。为了获得更好的帮助,请包括具体的链接错误。@BrianCain-谢谢回复。我试着在lc之前放-L,没有任何错误。在上面的问题中,我还使用-v-in-linker选项添加了详细的日志。任何见解都将是伟大的!!将这些对象文件和归档移到它们引用的对象(libc等)之前,或使用
--开始组
/
--结束组
。抱歉,我没有注意到
$MY_LIBCXX_LIB
是一个搜索路径,可能与此故障无关。您得到的
sys/stat.h
是否对应于您链接的
lc
?如果使用
clang
编译,请尝试
-###
-v
查看更多详细信息。哦,如果
$MY_LIBCXX_LIB
引用libc中的符号,则必须在链接行中紧跟其后。最后添加
-lc
或将其包装在
--start group
/
--end group
中。为了获得更好的帮助,请包括具体的链接错误。@BrianCain-谢谢回复。我试着在lc之前放-L,没有任何错误。在上面的问题中,我还使用-v-in-linker选项添加了详细的日志。任何见解都将是伟大的!!将这些对象文件和归档移到它们引用的对象(libc等)之前,或使用
--开始组
/
--结束组
。抱歉,我没有注意到
$MY_LIBCXX_LIB
是一个搜索路径,可能与此故障无关。