Link 只有 libc,而不是 C++ 中的 libc++
Link only libc, and not libc++ in C++
clang
和gcc
是否有可能以便携的方式不link libstdc++
或 libc++
,但仍然 link libc
并使用 C++ 的所有功能(嗯,只有 类)。
-nodefaultlibs
在我第一次测试后似乎不起作用(在 OS X 上测试),它不会 link libstdc++
,但它也不起作用t link 和 libSystem
,这是必需的。
最好、最便携的解决方案是,不 link 任何默认库,link 一切都手动进行。
添加:
-nodefaultlibs -lc
不会 link 任何东西,然后 link libc
。现在你有 C with Classes
.
您可以使用 otool -L
(在 OS X 上)或 ldd
(在 Linux 上)来验证这一点。
在 OSX 上,现在的输出是:
$ otool -L ./test
test:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.1.1)
而不是
$ otool -L ./test
./test:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.1.1)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
clang
和gcc
是否有可能以便携的方式不link libstdc++
或 libc++
,但仍然 link libc
并使用 C++ 的所有功能(嗯,只有 类)。
-nodefaultlibs
在我第一次测试后似乎不起作用(在 OS X 上测试),它不会 link libstdc++
,但它也不起作用t link 和 libSystem
,这是必需的。
最好、最便携的解决方案是,不 link 任何默认库,link 一切都手动进行。
添加:
-nodefaultlibs -lc
不会 link 任何东西,然后 link libc
。现在你有 C with Classes
.
您可以使用 otool -L
(在 OS X 上)或 ldd
(在 Linux 上)来验证这一点。
在 OSX 上,现在的输出是:
$ otool -L ./test
test:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.1.1)
而不是
$ otool -L ./test
./test:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.1.1)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)