Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何使用sed或其他方法替换Makefile中的特定字符串_Bash_Makefile - Fatal编程技术网

Bash 如何使用sed或其他方法替换Makefile中的特定字符串

Bash 如何使用sed或其他方法替换Makefile中的特定字符串,bash,makefile,Bash,Makefile,我回来后,一些用户试图把负面的所有我的帖子只是与坏的插入我不能张贴任何问题了。在那之后,说到点子上 我需要帮助来编辑Makefile,更具体地说,来自mupen64plus ui的Makefile-> 原始行: INCPATH = -I. -isystem /usr/include/SDL2 -isystem /usr/local/include/mupen64plus -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtW

我回来后,一些用户试图把负面的所有我的帖子只是与坏的插入我不能张贴任何问题了。在那之后,说到点子上

我需要帮助来编辑Makefile,更具体地说,来自mupen64plus ui的Makefile->

原始行:

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找不到lmupen64plus,我想是在搜索/usr/lib64中的libmupen64plus.so.2文件,但始终找不到,因为我没有为系统编译emulator和他的文件,只是在另一个地方找到了一个非常特定的前缀

我不知道如何指示Makefile也在$TARGETDIR/lib中搜索,以找到库可以编译而没有错误的地方

如果你想或需要检查整个脚本,有很多西班牙语文本注释,你可以访问->


我希望有人能帮助我使用Makefile的mupen64plus ui部分来完成我的宏脚本下载、编译和安装。

第一部分很简单。不知道你为什么想要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

在Makefile中使用$TARGETDIR之前,请确保已定义$TARGETDIR。如果TARGETDIR中有空格,那么您需要将其包含在引号中。

非常感谢,我使用了下面的

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,但我不明白我需要什么来解决它

您的sed命令与我期望的有点不同。首先,-i Makefile正在创建一个名为Makefile.Makefile的备份文件。其次,在shell中而不是在Makefile中解释$TARGETDIR。如果这正是你所期望/想要的,那没关系。mupen64plus是否在/media/compatido/Videojuegos/Linux/emulator/mupen64plus/64Bits/lib中?因为它看起来像是你要编译的文件。可能去掉“-lmupen64plus”?当我使用bak时,输出显示找不到名为bak的文件,我加入脚本以更改目录以在$TARGETDIR中搜索,该项目是Mupen64plus的GUI,我尝试去掉-lmupen64plus不起作用,因为在libraryWell搜索中有搜索功能,所以我发现这是项目->的一个老问题。好吧,我需要结束这个问题。好吧,我发现这是一个项目的老问题->。好的,我需要结束这个问题。请不要在一篇帖子里问两个不同的问题。改为写不同的问题。