我如何使用sed或其他文件替换Makefile中的特定字符串

问题描述 投票:0回答:2

我回来了,因为一些用户试图以负面的观点对我的所有帖子发表负面评论,我再也无法发布任何问题了。在那之后,很重要。

我需要编辑Makefile的帮助,具体来说是来自“ mupen64plus-ui”的Makefile-> 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++

[您注意到,我只需要更改一个非常具体的细节并替换我脚本上变量上的内容,现在该Makefile的第18行可以找到文件:m64p_common.h,m64p_types.h,m64p_frontend.h,m64p_config.h

需要完成编译而没有错误。

而且我需要了解的另一件事是以下几行:

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

[当我尝试编译时,输出showme找不到我认为正在/ usr / lib64中搜索文件“ libmupen64plus.so.2”的“ lmupen64plus”,但由于找不到编译器,所以再也找不到那里他的系统文件,只是到另一个地方的非常特定的前缀。

好吧,我不知道如何指示Makefile也可以在“ $ TARGETDIR / lib”中进行搜索,以发现该库可以正确编译。

如果您需要或需要检查整个脚本,有很多西班牙文字注释,可以访问-> https://pastebin.com/mxwxHc6P

我希望有人可以帮助我处理Makefile的mupen64plus-ui部分,以完成我的宏脚本的下载,编译和安装。

bash makefile
2个回答
1
投票

第一部分很简单。不确定为什么要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之前,请确保已定义。如果TARGETDIR中有空格,则需要在其两边加上引号。


0
投票

非常感谢您,我使用以下内容

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,但是我不明白我需要解决的问题

© www.soinside.com 2019 - 2024. All rights reserved.