ответ terdon работает на меня, но я должен был использовать простофилю, не awk. Руководство простофили (поиск 'соответствия (') объясняет, что аргумент Array в соответствии () расширение простофили. Возможно, это зависит от Вашей установки Linux, и Ваши awk/nawk/gawk версии, но от моей машины Ubuntu только таращат глаза, выполнил превосходный ответ terdon:
$ gawk '{if(match($0, /^\[ (.+?) \]/, k)){name=k[1]}} {print >name".txt" }' entry.txt
Необходимо добавить -Wl,-R/usr/local/lib
к LDFLAGS
при компиляции программы.
-R
опция компоновщика (для определения пути компоновщика во время выполнения) - -Wl
сообщает gcc
передать его ld
.
С общими библиотеками необходимо удостовериться, что они найдены компоновщиком во время компиляции и во время времени выполнения (cf. флаги -L
и -R
).
Можно использовать
$ ldd myProgramm
чтобы проверить, был ли путь компоновщика во время выполнения установлен правильно, т.е. если он может найти, необходимые общие библиотеки по программе запускают/которыми совместно использованные библиотеки, которые он загрузит.
Как обходное решение, я полагаю, что можно снабдить префиксом выполнение исполняемого файла с переменной среды LD_LIBRRAY_PATH
и дайте ему путь к каталогу, который содержит .so
библиотека.
$ LD_LIBRARY_PATH=/usr/local/lib ./myProgram
Но это походит на метод, Вы раньше компилировали рассматриваемое приложение, не корректно. Я должен был бы видеть Ваш метод компиляции для myProgram
быть более конкретным.