标签: source

当我尝试从源代码构建程序时,为什么“make”会抱怨缺少规则?

我是 Linux 新手,我正在尝试编译名为DL_POLY_Classic 的科学软件。我下载了 zip 文件dl_class_1.6.tar.gz并使用命令将其压缩tar xvzf dl_class_1.6.tar.gz。它为我提供了一系列文件夹,其中包含用于程序操作的各种文件,这些文件在程序手册中进行了描述。其中一个名为source 的目录包含许多.f文件等。该手册说要编译代码,需要采用示例/模板 Makefile 之一并修改其中的路径以引导make程序到包含编译器的适当目录。(这个 DL_POLY_Classic 程序是用 Fortran [Fortran 90,我相信]编写的,并且必须用它编译。)

根据一位同事的建议,我尝试使用集群上的 Intel Fortran 编译器 (ifort) 编译此代码。我修改了模板 Makefile 中的目标之一;这个目标现在在 Makefile 中有以下文本:

#========== mpich-c2
mpich-c2: dpp
    cp /opt/mpich/ch-p4/include/mpif.h mpif.h
    $(MAKE) LD="/opt/mpich_intel/ch-p4/bin/mpif90 -O3 -o" \
    LDFLAGS="-L/opt/mpich_intel/ch-p4/lib64 -lmpich" \
    TIMER="" \
    FC=/opt/intel_fc_80/bin/ifort \
    FFLAGS="-c " \
    MPICH_F90="/opt/mpich_intel/ch-p4/bin/mpif90" \
    CPFLAGS="-D$(STRESS) -DMPI -P -D'pointer=integer'\
    -I/opt/mpich_intel/ch-p4/include" \
    EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
Run Code Online (Sandbox Code Playgroud)

我按照手册的指示将Makefile 放在目录中。然后在源 …

compiling source make mpi

2
推荐指数
1
解决办法
6676
查看次数

在 Debian Squeeze 上找不到带有 apt-get 源的源包

我有一台运行 Debian Squeeze 的旧服务器。我正在尝试下载某个包的源代码,以便我可以手动修补它。但是,apt-get source我尝试的每个包都失败了。一个例子:

root@xxxx:/home/myhomedir# apt-get source emacs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Ignore unavailable target release 'stable' of package 'emacs'
E: Unable to find a source package for 
Run Code Online (Sandbox Code Playgroud)

我尝试的每个其他源包都会重复相同的错误。但是,安装具有相同名称的包是可行的(例如apt-get install emacs)。以下是我的内容sources.list

# the basic archive
deb ftp://ftp.fi.debian.org/debian/ squeeze-lts main non-free contrib
deb-src ftp://ftp.fi.debian.org/debian/ squeeze-lts main non-free contrib

# the security patches
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
Run Code Online (Sandbox Code Playgroud)

我最初认为这是因为我从中得到的错误apt-get …

source debian apt

2
推荐指数
1
解决办法
2万
查看次数

了解linux内核中的include目录

谁能解释一下为什么头文件被分成 include 目录以及 arch 下?

如果我想链接我的源代码以包含头文件,我实际上应该从哪里获取它?

include/
Run Code Online (Sandbox Code Playgroud)

或者

arch/arm/
Run Code Online (Sandbox Code Playgroud)

我正在 ARM 主机上编写程序(不是交叉编译)

有人可以解释一下内核中头文件的结构吗?它们是如何传播的以及背后的逻辑?

source linux-kernel

2
推荐指数
1
解决办法
6312
查看次数

$_ 和 $0 在 bash 中代表什么?

我在理解以下示例中的变量 {_,0} 时遇到困难。

在脚本中tmp.sh

func() 
{
echo $_
echo $0
echo $1
}
Run Code Online (Sandbox Code Playgroud)

使用参数 x 调用 tmp.sh:

~$ ./tmp.sh x
./tmp.sh
./tmp.sh
x
Run Code Online (Sandbox Code Playgroud)

并使用参数 x 获取 tmp.sh:

~$ . ./tmp.sh x
x
bash
x
Run Code Online (Sandbox Code Playgroud)

据我了解$_$0,后者用于第一个参数,如第一个示例中所示./tmp.sh。为什么它相当于第二个例子中的bash?

扩展为什么.,前者,我不确定,返回带有源 bash 的最后一个参数,相当于无源 bash 中的 $0 。是这样吗?

bash source

2
推荐指数
1
解决办法
4978
查看次数

从脚本文件调用 Bash 函数失败,而从终端调用成功

在使用 Bash 的 Ubuntu 16.04 中,我创建了一个文件$HOME/ulcwe/software_internal.sh,其中包含一个rse()没有调用的函数。该文件源自~/.bashrc(它是由其自身获取的),我可以rse从终端中的任何位置调用,并且它将运行而不会出现错误。

然而,我尝试运行此脚本文件,其中包含对第 36 行的调用rse,但出现此错误:

第 36 行:rse:未找到命令

为什么函数在手动调用(rse在 Bash 中键入并执行)中调用成功,但在 Bash 脚本中调用失败?如何从脚本中成功调用它?

source shell-script files bash-functions

2
推荐指数
1
解决办法
1342
查看次数

从代码库执行远程脚本会导致无限循环

我经常使用这种模式在 GitHub 中执行原始版本的远程 Bash 脚本:

wget -O - https://raw.githubusercontent.com/<username>/<project>/<branch>/<path>/<file> | bash
Run Code Online (Sandbox Code Playgroud)

通常我可以毫无问题地做到这一点,但是由于我将以下代码添加到某个脚本中,我得到了一个无限循环echo(即使我只是将它从 GitHub 复制粘贴到终端并直接执行,它也经常发生):

wget -O - https://raw.githubusercontent.com/<username>/<project>/<branch>/<path>/<file> | bash
Run Code Online (Sandbox Code Playgroud)

我至少可以部分解决这个问题,例如:

while true; do
    read -p "Example question: Do you wish to edit the PHP file now?" yn
    case $yn in
        [Yy]* ) nano PROJECT/PHP_FILE; break;;
        [Nn]* ) break;;
        * ) echo "Please answer yes or no.";;
    esac
done
Run Code Online (Sandbox Code Playgroud)

这表明| bash管道至少会使问题恶化,因为问题总是伴随着它发生。

为什么会echo "Please answer yes or no."“无休止地”发生?(我用CTRLC+停止它C
您在单行执行命令和/或 …

bash source remote control-flow case

2
推荐指数
1
解决办法
85
查看次数

如何让apt读取不同的sources.list

我正在尝试为我的用户安装程序,因为我没有 sudo 权限。

我尝试dos2unix按如下方式安装软件包:

apt-get source dos2unix 
./configure --prefix=$HOME/myapps
make
make install
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

E: You must put some 'source' URIs in your sources.list
Run Code Online (Sandbox Code Playgroud)

由于我无法编辑sources.list,有没有办法让apt-get 读取另一个文件?

source make sudo apt configure

1
推荐指数
1
解决办法
608
查看次数

在 linux 内核中找不到一些“asm”、“生成的”头文件的来源?

所以,我正在编写一个在内核空间中工作的模块。我的代码编译正确并且工作正常。

问题是有一些头文件,我在任何地方都找不到。这对我来说没有意义,为什么头文件不存在时一切正常。他们一定在某个地方。

这些是我在任何地方都找不到的一些头文件(还有更多,但对于我的问题,它们可能就足够了):

#include <asm/errno.h>
#include <asm/socket.h>  /* /include/linux/socket.h */
#include <stdarg.h>      /* /include/linux/kernel.h */
#include <asm/types.h>
#include <asm/mmiowb.h>  /* /include/linux/spinlock.h */
#include <asm/param.h>   /* /include/linux/jiffies.h */
Run Code Online (Sandbox Code Playgroud)

尽管x86在 .

而且我不知道在哪里查找这些文件:

#include <generated/timeconst.h>    /* /include/linux/jiffies.h */
#include <generated/bounds.h>
#include <generated/autoconf.h>     /* /include/linux/kconfig.h */
#include <generated/asm-offsets.h>
Run Code Online (Sandbox Code Playgroud)

我正在linux 内核 5.4.31的以下目录中查找这些文件:

/include
/include/uapi
/arch/x86/include
/arch/x86/include/uapi
Run Code Online (Sandbox Code Playgroud)

我希望可以在上述包含路径中找到这些文件。但是我对编译后处理 linux 头文件的位置和方式知之甚少,因为我在源代码中找到了它们。

linux c source x86 linux-headers

1
推荐指数
1
解决办法
980
查看次数

缩进 C 源文件行的命令

我需要一种在终端内的 C 源文件上自动缩进块的方法。根据规范。

前:

int main() {
puts("Hello world");
}
Run Code Online (Sandbox Code Playgroud)

后:

int main()
{
puts("Hello world");
}
Run Code Online (Sandbox Code Playgroud)

c source text-processing indentation

0
推荐指数
1
解决办法
61
查看次数

我们可以编译windows程序的源代码吗?

请原谅我缺乏专业知识,但我想知道是否可以编译开源 Windows 程序的源代码并在 Linux 上使用它的可执行文件(没有 Wine)。就我而言,它是Ant Renamer,我目前将它与 Wine 一起使用(我对 Linux 替代品不满意,它缺乏一些高级功能或 GUI)。

compiling source windows

0
推荐指数
1
解决办法
1106
查看次数

从源代码安装 deja-dup 的一些麻烦

(学习如何在 linux 上安装程序...)

deja-dup 源代码可以在其 GitHub 存储库上下载。有一个makefile con 包。一旦进入我运行的文件夹:

santi@eoan:~/deja-dup$ make
Run Code Online (Sandbox Code Playgroud)

并得到错误:

The Meson build system

Project name: deja-dup
Project version: 40.6
...
   Run-time dependency goa-1.0 found: NO (tried pkgconfig and cmake)
    Run-time dependency json-glib-1.0 found: NO (tried pkgconfig and cmake)
    meson.build:36:0: ERROR: Dependency "json-glib-1.0" not found, tried pkgconfig and cmake


A full log can be found at /home/santi/deja-dup/builddir/meson-logs/meson-log.txt
make: *** [Makefile:15: configure] Error 1
Run Code Online (Sandbox Code Playgroud)

我正在运行 lubuntu eoan,其中 deja-dup 已更新,或几乎已更新。我想知道出了什么问题以供将来参考。

source make software-installation pkg-config cmake

0
推荐指数
1
解决办法
252
查看次数

靶心和稳定之间有什么区别吗?

我正在查看https://deb.debian.org/debian/dists/中的目录。通过比较时间戳,我可以很容易地看出bullseyestable是同一件事。/etc/apt/sources.list那么,即使我将条目从更改deb https://deb.debian.org/debian/dists/ bullseye main contrib non-free为 ,行为是否没有差异deb https://deb.debian.org/debian/dists/ stable main contrib non-free

linux source debian apt distributions

0
推荐指数
1
解决办法
548
查看次数