Size: a a a

2020 July 21

AT

Anatoly Tomilov in pro.cxx
remove_const не уберёт константность у типа, на который указывает ссылка
источник

A

Alex in pro.cxx
Тогда ещё нубский вопрос: const T& - это конст ссылка на Т, или ссылка на const T? (да, я не могу запомнить сишное правило чтения деклараций по спирали)
источник

AT

Anatoly Tomilov in pro.cxx
у ссылки нет модификатора const в общем. И ссылки на ссылку не бывает, как и указателя
источник

AT

Anatoly Tomilov in pro.cxx
это ссылка на const T
источник

A

Alex in pro.cxx
спасибо
источник

AT

Anatoly Tomilov in pro.cxx
Anatoly Tomilov
у ссылки нет модификатора const в общем. И ссылки на ссылку не бывает, как и указателя
можно написать int * const, но не int & const в частности
источник

AT

Anatoly Tomilov in pro.cxx
Alex
Тогда ещё нубский вопрос: const T& - это конст ссылка на Т, или ссылка на const T? (да, я не могу запомнить сишное правило чтения деклараций по спирали)
самое сложное, что на практике регулярно надобится — это ссылка на массив или указатель на функцию/функцию-член.
источник

A

Alex in pro.cxx
указатели на функцию, вроде бы, усвоил (даже на мембер функции!), а вот со ссылкой на массив не помню, чтобы сталкивался)
Кстати, вспомнил хороший сайт: https://cdecl.org/ (он в обе стороны работает)
источник

AE

Andrey Enshin in pro.cxx
Привет!

Пытаюсь собрать и слинковать статически netcat, чтобы в нём сразу был и libbsd

Это нужно, чтобы избежать подобного при запуске на машине без вышеупомянутой либы:
./nc: error while loading shared libraries: libbsd.so.0: cannot open shared object file: No such file or directory

Сорцы беру из репы
https://salsa.debian.org/debian/netcat-openbsd

собираю под убунтой так LDFLAGS=-static make
но libbsd всё равно линкуется динамически

есть идеи как собрать таки этот бинарь статически с libbsd?
источник

AT

Andrew Titov in pro.cxx
Andrey Enshin
Привет!

Пытаюсь собрать и слинковать статически netcat, чтобы в нём сразу был и libbsd

Это нужно, чтобы избежать подобного при запуске на машине без вышеупомянутой либы:
./nc: error while loading shared libraries: libbsd.so.0: cannot open shared object file: No such file or directory

Сорцы беру из репы
https://salsa.debian.org/debian/netcat-openbsd

собираю под убунтой так LDFLAGS=-static make
но libbsd всё равно линкуется динамически

есть идеи как собрать таки этот бинарь статически с libbsd?
Может быть, вам пригодится это:
https://github.com/H74N/netcat-binaries
источник

AE

Andrey Enshin in pro.cxx
@andtit2001 спасибо!
Кажется, он делает
make -e $(ALL) $(MFLAGS) XFLAGS='-DLINUX -DGAPING_SECURITY_HOLE' STATIC=-static

https://github.com/H74N/netcat-binaries/blob/master/Makefile#L70

собралось, но опять без libbsd
источник

AE

Andrey Enshin in pro.cxx
Интересно, а зачем ему нужно /usr/lib/gcc/i686-linux-gnu/7/ ?

https://github.com/H74N/netcat-binaries/blob/master/Makefile#L12
источник

Aliaksei Қауіпсіздік... in pro.cxx
gcc netcat.c atomicio.c socks.c /usr/lib/x86_64-linux-gnu/libbsd.a -lbsd -lresolv -static -lpthread -o nc
источник

Aliaksei Қауіпсіздік... in pro.cxx
$ ldd nc
not a dynamic executable
источник

Aliaksei Қауіпсіздік... in pro.cxx
после того зааплаились все deb патчи разумеется
источник

AE

Andrey Enshin in pro.cxx
хм, а у меня
ldd nc
       linux-vdso.so.1 =>  (0x00007fff8698e000)
       libbsd.so.0 => not found
       libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f42f795b000)
       libc.so.6 => /lib64/libc.so.6 (0x00007f42f758d000)
       /lib64/ld-linux-x86-64.so.2 (0x00007f42f7b74000)
источник

Aliaksei Қауіпсіздік... in pro.cxx
ну потому что не скомпилено как я написал выше
источник

AE

Andrey Enshin in pro.cxx
ура! заработало)

спасибо!

а почему просто -static недостаточно?
источник

Aliaksei Қауіпсіздік... in pro.cxx
потому что -static делает не то что многие ожидают, static это заснуть часть libc
источник

Aliaksei Қауіпсіздік... in pro.cxx
а не статично слинковать
источник