Другой способ освежевать эту кошку состоит в том, чтобы использовать stdbuf
программа, которая является частью Coreutils GNU (FreeBSD также имеет свой собственный).
stdbuf -i0 -o0 -e0 command
Это выключает буферизацию полностью для входа, вывода и ошибки. Для некоторых приложений буферизация строки может более подойти по причинам производительности:
stdbuf -oL -eL command
Обратите внимание, что это только работает на stdio
буферизация (printf()
, fputs()
...) для динамично связанных приложений, и только если то приложение иначе не корректирует буферизацию своих стандартных потоков отдельно, хотя это должно покрыть большинство приложений.
A .a
файл является статической библиотекой, в то время как a .so
файл является общим объектом (динамическая) библиотека, подобная DLL в Windows. Существует некоторая подробная информация о различиях между двумя на этой странице.
Как следование на.a файл является архивом "площади". Мало чем отличаясь от архива tar, это хранит.o или объектные файлы, позволяя им быть вытащенным архива и связанным в программу, среди прочего. Вы могли использовать площадь, чтобы хранить другие файлы, если бы Вы хотели.
Можно получить список членов файла площади с-t параметром, например:
ar -t /usr/lib/libc.a
A. таким образом, файл является файлом "общего объекта" и имеет намного больше информации, доступной компоновщику так, чтобы участники могли быть связаны в с программой загрузки максимально быстро.
Например, попытка:
objdump -T /lib/libc-2.11.1.so
(или безотносительно версии libc.so Вы имеете в своем / каталоге lib.) Отмечают, что .so файл мог также просто содержать сценарий компоновщика, направляющий его, чтобы найти файл в другом месте или использовать что-то еще.
Интересно, .so файл может также быть абсолютной программой. Например, попытка выполнения/lib/libc.so.6. (К сожалению, эта последняя часть, кажется, не работает над более современными системами. Не то, чтобы это - большая потеря.)
ar -t /usr/lib/libc.a
. На самом деле -
кажется, не необходим в этом случае. Также /lib/libc.so.6.
просто печать некоторый вывод. Я не знаю, назвал ли я это a full fledged program
.
– Faheem Mitha
15.05.2011, 11:09
ldd
на .so's, и это покажет Вам, что другие библиотеки это использует. Static возвратится с сообщением, заявляя, что это не динамическая библиотека.
– Marcin
17.05.2011, 04:06
.a
может только быть включен как часть программы во время компиляции..so
может быть "импортирован" в то время как загрузки программы. – LawrenceC 15.05.2011, 02:39ar
утилита. Больше информации здесь – ajk 29.11.2016, 18:19