我正在打包一个应用程序,其中包含通常会进入的二进制文件/usr/bin和一个可以进入的共享库/usr/lib。
但是,向软件中心提交应用程序的包指南建议二进制文件应该进入/opt.
将这些文件放入/opt并确保它们在$PATH.
为了澄清起见,我所指的页面在这里:http : //developer.ubuntu.com/publish/my-apps-packages/,它指出:
“能够安装到/opt/....”
packaging paths binary application-development application-submission
我有一个名为的二进制文件qkey- 当我尝试使用 gedit 打开它时,我收到一条错误消息,告诉我该文件的格式未知。
这是由于可能的加密吗?(毕竟它是一个游戏统计文件......)
或者只是gedit无法打开二进制文件?
cmake/3.18.1/bin现在,我可以从其目录中看到 cmake 可执行文件ls,但是当我运行时./cmake,bash 返回bash: ./cmake: No such file or directory。什么地方出了错?控制台的完整输出:
ubuntu@me:~/cmake/3.18.1/bin$ ls
ccmake cmake cpack ctest ninja
ubuntu@me:~/cmake/3.18.1/bin$ ./cmake
bash: ./cmake: No such file or directory
ubuntu@me:~/cmake/3.18.1/bin$ file ./cmake
./cmake: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, stripped
ubuntu@me:~/cmake/3.18.1/bin$ ldd ./cmake
not a dynamic executable
ubuntu@me:~/cmake/3.18.1/bin$ uname -m
aarch64
Run Code Online (Sandbox Code Playgroud)
谢谢!
事实上,标题说明了一切。但请允许我指定问题:
假设我要编译一个使用 libffi、libGL、dlfcn 和 SDL 的应用程序,会说二进制文件在具有相同架构的其他 Linux 发行版上运行吗?
我问的原因是因为目录/usr/lib/i386-linux-gnu- 我可能错了,但我认为这个目录是特定于 Ubuntu 的,不是吗?
那么,在 Ubuntu 上编译的二进制文件到底有多便携?
如果我想让所有用户都可以使用我下载的程序,是否有一个约定说明我应该把它们放在哪里?例如,Blender 似乎有一个已编译的可执行文件,但也有它(大概)依赖的其他目录和文件。
我应该从 bash 脚本安装程序到哪个目录的答案?推荐 /opt,但默认情况下它不在我的 $PATH 中,尽管从 Ubuntu 软件中心安装了很多东西,但我的 /opt 恰好是空的。
存储用户本地可执行文件的正确位置在哪里?
echo $PATH 给
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)
它不包括例如。 $HOME/bin
将$HOME/bin是可取的?或者$HOME/opt/bin……
我想我也必须将它添加到我的 .profile 中?
是什么的NVIDIA之间的区别传统的二进制专有的驱动程序和二进制只有专有驱动?
我需要主要从 Node.js Javascript 文件构建一个 DEB 包,但它也应该包含一些二进制文件。它们列在debian/source/include-binaries 中。否则我会收到错误消息
dpkg-source: error: unrepresentable changes to source
Run Code Online (Sandbox Code Playgroud)
有问题的命令是:
bzr builddeb -- -us -uc
Run Code Online (Sandbox Code Playgroud)
添加文件include-binaries 后,再次运行bzr builddeb -- -us -uc时,现在出现不同的错误:它说
dpkg-source: error: aborting due to unexpected upstream changes, see /tmp/mailadmin_0.0-1.diff.n6m5_6
Run Code Online (Sandbox Code Playgroud)
我不知道如何摆脱这个。
在下一行输出中,它告诉我
dpkg-source: info: you can integrate the local changes with dpkg-source --commit
Run Code Online (Sandbox Code Playgroud)
但是,如果我在包的构建区域中运行此命令,即使构建区域中也存在debian/source/include-binaries,它也会再次对源错误消息进行无法表示的更改。
我错过了解决这个问题的方法......
我尝试删除构建过程中产生的所有文件,仍然没有成功。
更多细节:
目标目录是/opt/mailadmin。由于这个目录不常见,我把它列在文件debian/mailadmin.install(其中包含一行:)
opt/mailadmin opt/
Run Code Online (Sandbox Code Playgroud)
该BZR builddeb过程使用预期该文件。
没有上游 …
我正在尝试制作 rm 的静态二进制文件,因此我尝试使用以下命令编译 coreutils
configure; make SHARED=0 CC='gcc -static'; make install
Run Code Online (Sandbox Code Playgroud)
但我一直遇到错误。
首先 make 抱怨 c99 或 gnu99,我通过将 -std=gnu99 添加到 CC 值来解决这个问题:
make SHARED=0 CC='gcc -static -std=gnu99'
Run Code Online (Sandbox Code Playgroud)
之后它说:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbeginT.o: relocation R_X86_64_32 against `__TMC_END__' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.8/crtbeginT.o: error adding symbols: Bad value
Run Code Online (Sandbox Code Playgroud)
我尝试添加 -fPIC 就像添加 -std 选项一样,但无济于事。
甚至可以制作 coreutils 的静态二进制文件吗?(只对 rm 感兴趣)如果是这样,如何?(我有 0 次构建 linux 二进制文件的经验)
PS:我从ubuntu站点下载了coreutils源码,trusty.(coreutils-8.21)
我想在 Ubuntu 上安装特殊软件。在它的安装指南中已经提到我必须将二进制文件和源文件彼此分开。这是什么意思?我怎样才能做到这一点?
我应该忽略有关分离二进制文件和源文件的说明吗?我从网上下载了特殊软件的git源码。它是一个 zip 文件,包含 9 个文件夹(“cmake”、“CMakefiles”、“docs”、“gui”、“modellingframework”、“optimisation”、“otbsuppl”、“QtpropertyBrowser”和“shared”)和 6 个文件(“Cmakelist.txt”、“GPLV3.txt”、“安装”、“许可证”、“LUMASSConfig.h.in”和“自述文件”)。我没看懂它们是什么?抱歉,我对 Linux 和 Ubuntu 非常陌生。