库班图 19.10
我完全遵循了该指示:
$ mkdir $HOME/src
$ cd $HOME/src
$ git clone git://sourceware.org/git/glibc.git
$ mkdir -p $HOME/build/glibc
$ cd $HOME/build/glibc
$ $HOME/src/glibc/configure --prefix=/usr
$ make
Run Code Online (Sandbox Code Playgroud)
但是在最后一个命令“make”期间,我收到以下错误(仅给出输出的结尾):
make[3]: Leaving directory '/home/denis/src/glibc/elf'
gcc -nostdlib -nostartfiles -r -o /home/denis/build/glibc/elf/librtld.os '-Wl,-(' /home/denis/build/glibc/elf/dl-allobjs.os /home/denis/build/glibc/elf/rtld-libc.a -lgcc '-Wl,-)' \
-Wl,-Map,/home/denis/build/glibc/elf/librtld.os.map
gcc -nostdlib -nostartfiles -shared -o /home/denis/build/glibc/elf/ld.so.new \
-Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both -Wl,-z,defs \
/home/denis/build/glibc/elf/librtld.os -Wl,--version-script=/home/denis/build/glibc/ld.map \
-Wl,-soname=ld-linux-x86-64.so.2 \
-Wl,-defsym=_begin=0
/usr/bin/ld: /home/denis/build/glibc/elf/librtld.os: in function `_rtld_main_check':
/home/denis/src/glibc/elf/../sysdeps/x86/dl-prop.h:33: undefined reference to `_dl_cet_check'
/usr/bin/ld: /home/denis/src/glibc/elf/../sysdeps/x86/dl-prop.h:33: undefined reference to `_dl_cet_check'
/usr/bin/ld: …Run Code Online (Sandbox Code Playgroud) I came across an elegant line of reading a binary file into a vector like this (that works):
std::ifstream ifs("myfile.bin", std::ios::binary);
std::vector<char> buffer(std::istreambuf_iterator<char>(ifs), {});
Run Code Online (Sandbox Code Playgroud)
Instead since I want my vector to be a shared pointer I write:
std::ifstream ifs("myfile.bin", std::ios::binary);
auto sp = std::make_shared<std::vector<char>>(std::istreambuf_iterator<char>(ifs), {});
Run Code Online (Sandbox Code Playgroud)
I.e just pass the vector constructor arguments to make_shared (as I usually do to create any shared pointer of any objects). But I get: error: no matching function for call to 'make_shared'?
Detailed output:
/usr/include/c++/11.1.0/bits/shared_ptr.h|873 …