Как я могу использовать Sed или другой, чтобы заменить конкретную строку c в Makefile - PullRequest
0 голосов
/ 13 апреля 2020

Я вернулся после того, как некоторые пользователи попытались добавить негативы ко всем моим сообщениям только из-за дурного намерения. Я больше не могу оставлять вопросы. Ну а после этого, к сути.

Мне нужна помощь, чтобы отредактировать Makefile, чтобы быть более точным c Makefile из "mupen64plus-ui" -> https://github.com/robalni/mupen64plus-ui

Исходная строка:

INCPATH       = -I. -isystem /usr/include/SDL2 
-isystem /usr/local/include/mupen64plus
 -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtNetwork -isystem /usr/include/qt5/QtXml -isystem /usr/include/qt5/QtSql -isystem /usr/include/qt5/QtCore -I. -isystem /usr/include/libdrm -I. -I/usr/lib64/qt5/mkspecs/linux-g++

Мне нужно:

INCPATH       = -I. -isystem /usr/include/SDL2 
-isystem "$TARGETDIR/include"
 -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtNetwork -isystem /usr/include/qt5/QtXml -isystem /usr/include/qt5/QtSql -isystem /usr/include/qt5/QtCore -I. -isystem /usr/include/libdrm -I. -I/usr/lib64/qt5/mkspecs/linux-g++

Вы заметили, что мне просто нужно изменить очень точную c деталь и заменить ее содержимым. У меня была переменная в моем скрипте, сейчас это строка 18, в которой Makefile может найти файлы: m64p_common.h, m64p_types.h, m64p_frontend.h, m64p_config.h

Необходим до фини sh компиляция без ошибок.

И еще одна вещь, которую мне нужно понять, это следующие строки:

LFLAGS        = -L/usr/lib64 -Wl,-O1
LIBS          = $(SUBLIBS) -lquazip5 -lSDL2 -lmupen64plus -ldl -lQt5Widgets -lQt5Gui -lQt5Network -lQt5Xml -lQt5Sql -lQt5Core -lGL -lpthread

Когда я пытаюсь скомпилировать, выходной showme не может найти "lmupen64plus" я Я думаю, что ищет файл "libmupen64plus.so.2" в / usr / lib64, но никогда не может найти его там, потому что я не компилирую эмулятор и его файл для системы, просто с очень конкретным c префиксом в другом месте.

Ну, я понятия не имел, как я могу указать на марку Файл, который нужно искать в "$ TARGETDIR / lib", чтобы найти, что библиотека может компилироваться без ошибок.

Если вы хотите или хотите проверить весь скрипт, у вас было много текстовых комментариев на испанском языке sh, вы можете сделать это посещение -> https://pastebin.com/mxwxHc6P

Что ж, я надеюсь, что кто-нибудь может помочь мне с частью make-файла mupen64plus-ui, чтобы завершить sh мой макрос-скрипт для загрузки, компиляции и установки.

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Первая часть проста. Не уверен, почему вы хотите sed вместо простого редактирования вручную.

sed -i "bak" -e 's#/usr/local/include/mupen64plus#"$TARGETDIR/include"#' Makefile

Вы на дорожке для второй части. Включите желаемый путь поиска:

LFLAGS        = -L/usr/lib64 -Wl,-O1

становится:

LFLAGS        = -L/usr/lib64 -L$TARGETDIR/lib -Wl,-O1

Убедитесь, что $TARGETDIR определен до его использования в вашем Makefile. Если в TARGETDIR есть пробелы, вам нужно включить его в кавычки.

0 голосов
/ 13 апреля 2020

Большое спасибо, я пользуюсь следующим:

sed -i "Makefile" -e "s#/usr/local/include/mupen64plus#$TARGETDIR/include#" Makefile

sed -i "Makefile" -e "s#LFLAGS        = -L/usr/lib64 -Wl,-O1#LFLAGS        = -L/usr/lib64 -L$TARGETDIR/lib -Wl,-O1#" Makefile

Спасибо, решите издание, но я пока не могу скомпилировать, все равно вывод

g++ -L/usr/lib64 -L/media/Compartido/Videojuegos/Linux/Emulador/mupen64plus/64Bits/lib -Wl,-O1 -o mupen64plus main.o cheatparse.o common.o core.o mainwindow.o error.o plugin.o sdl.o settings.o configcontrolcollection.o keyspec.o aboutguidialog.o cheatdialog.o cheattree.o configeditor.o downloaddialog.o gamesettingsdialog.o inputdialog.o logdialog.o pluginconfigdialog.o settingsdialog.o emulation.o emuthread.o glwindow.o vidext.o osal_dynamiclib.o romcollection.o thegamesdbscraper.o gridview.o listview.o tableview.o clickablewidget.o treewidgetitem.o qrc_mupen64plus.o moc_mainwindow.o moc_aboutguidialog.o moc_cheatdialog.o moc_cheattree.o moc_configeditor.o moc_downloaddialog.o moc_gamesettingsdialog.o moc_inputdialog.o moc_logdialog.o moc_pluginconfigdialog.o moc_settingsdialog.o moc_emulation.o moc_emuthread.o moc_romcollection.o moc_thegamesdbscraper.o moc_gridview.o moc_listview.o moc_tableview.o moc_clickablewidget.o   -lquazip5 -lSDL2 -lmupen64plus -ldl -lQt5Widgets -lQt5Gui -lQt5Network -lQt5Xml -lQt5Sql -lQt5Core -lGL -lpthread 
/usr/lib64/gcc/x86_64-slackware-linux/5.5.0/../../../../x86_64-slackware-linux/bin/ld: no se puede encontrar -lmupen64plus
collect2: error: ld devolvió el estado de salida 1
Makefile:420: fallo en las instrucciones para el objetivo 'mupen64plus'
make: *** [mupen64plus] Error 1

хорошо LD может ' не могу найти -lmupen64plus, но я не понимаю, что мне нужно, чтобы решить эту проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...