我遇到了这个问题,解决方案是将 libstdc++.a 显式传递给 g++,如下所示:
/usr/local/gcc-10.2.0/bin/g++ -I/usr/local/gcc-10.2.0/include -L/usr/local/gcc-10.2.0/lib64 -Wl,-rpath,/usr/local/gcc-10.2.0/lib64 b.cpp /usr/local/gcc-10.2.0/lib64/libstdc++.a
Run Code Online (Sandbox Code Playgroud)
我的问题:为什么我需要明确传递 libstdc++.a?我怎样才能让它自动,以便默认使用 libstdc++.a?我怎样才能找到这两个问题的答案?
测试代码:
#include <sstream>
using namespace std;
int
main ()
{
ostringstream oss;
unsigned long k = 5;
oss << k;
}
Run Code Online (Sandbox Code Playgroud)
使用以下参数编译:
/usr/local/gcc-10.2.0/bin/g++ -I/usr/local/gcc-10.2.0/include -L/usr/local/gcc-10.2.0/lib64 -Wl,-rpath,/usr/local/gcc-10.2.0/lib64 -lstdc++ b.cpp
Run Code Online (Sandbox Code Playgroud)
得到以下输出:
/tmp/cclRSXGV.o: In function main': b.cpp:(.text+0x35): undefined reference to std::ostream::operator<<(unsigned long)'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
使用 GNU gcc 10.2.0,安装如下:
../gcc-10.2.0/configure --prefix=/usr/local/gcc-10.2.0 --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++ --disable-dssi …Run Code Online (Sandbox Code Playgroud) 我有以下代码,但有时我会得到java.lang.ArrayIndexOutOfBoundsException特定的代码subject.gets.我不知道这怎么会发生,但它只是做到了.我有一些多线程,但这个数组是函数的本地数据,不能从其他任何地方访问.
// Within onCreate
Random random = new Random();
// some where else
List<Subject> subjects = new ArrayList<Subject>();
// There is SOME CODE HERE TO ADD ELEMENTS.
// There is SOME CODE HERE TO ADD ELEMENTS.
// There is SOME CODE HERE TO ADD ELEMENTS.
// There is SOME CODE HERE TO ADD ELEMENTS.
// There is SOME CODE HERE TO ADD ELEMENTS.
subjects.get(random.nextInt() % subjects.size())
Run Code Online (Sandbox Code Playgroud)