Articles of unix

如何根据操作系统家族有不同的依赖关系

我正在编写一个跨平台的库,它具有特定于平台的依赖关系,一个用于unix平台,另一个用于windows。 这些箱子只能在特定的平台上编译,所以我不能把它们全部添加到通常的依赖项下。 在实际的防锈代码中,我使用cfg属性,如#[cfg(unix)]来编译某些平台的某些代码,我想在Cargo.toml或构build脚本中为依赖项做类似的事情。 目前,我正在使用这样的目标三元组: [target.i686-unknown-linux-gnu.dependencies.crate1] git = repo1 [target.x86-unknown-linux-gnu.dependencies.crate1] git = repo1 [target.x86_64-unknown-linux-gnu.dependencies.crate1] git = repo1 [target.i686-pc-windows-gnu.dependencies] crate2 = "*" [target.x86-pc-windows-gnu.dependencies] crate2 = "*" [target.x86_64-pc-windows-gnu.dependencies] crate2 = "*" 但是,这个清单还不够详尽。 我不关心架构或ABI,只有OS系列,因此,名单会变得很长,我是为每一个unix-like目标三倍匹配。 有没有什么方法可以使用特定的依赖关系,仅由操作系统的操作系统平台运行? 就像是: [target.family.unix.dependencies] abc-sys = "*" def = "*" [target.family.windows.dependencies] abc-win = "*"

在C中检测64位编译

有没有一个Cmacros或某种方式,我可以检查我的C程序编译时在C编译为64位或32位? 编译器:GCC操作系统,我需要做的检查:Unix / Linux 另外我怎么能检查当运行我的程序,如果操作系统是64位的能力?

unix和windows文件的区别

我是否正确地认为“windows文件”和“unix文件”之间的唯一区别是换行符? 我们有一个系统已经从一台Windows机器移动到一个unix机器,并有格式的麻烦。 我需要在文件传送到我们的“传输系统”中的系统之前自动化unix / windows之间的转换。 我可能需要一些东西来确定当前的格式,并将其转换为其他格式。 如果只是换行这是最大的区别,那么我正在考虑用java.io来读取文件。 据我所知,他们能够处理与readLine。 然后把每一行写回去 while (line = readline) print(line + NewlineInOtherFormat) …. 概要: samjudson : 这只是文本文件的不同之处,UNIX使用单个换行(LF)来表示新行,Windows使用回车/换行(CRLF),而Mac仅使用CR。 Cebjyre阐述: OS X使用LF,与UNIX相同 – MacOS 9和更低版本使用CR 莫 国家字符的字符编码也可能有所不同。 没有“unix编码”,但许多linux变体使用UTF-8作为默认编码。 Mac OS(也是unix)使用自己的编码(macroman)。 我不知道,默认的编码是什么窗口。 麦克道尔 除了换行符之外,如果在Windows上将文件视为Unicode,则字节顺序标记可能会导致问题。 Cheekysoft 但是,您可能遇到的另一组问题可能与单/多字节字符编码有关。 如果你看到奇怪的意外字符(不在行尾),那么这可能是原因。 特别是如果您看到方框,问号,颠倒的问号,多余的字符或意外的重音字符。 塞迪 在unix上,以。开头的文件。 被隐藏。 在Windows上,这是一个文件系统的标志,你可能不容易访问。 这可能会导致应该隐藏的文件现在在客户端机器上可见。 两者之间的文件权限不尽相同。 您可能会发现,当您将文件复制到unix系统时,这些文件现在属于执行复制的用户并且权限有限。 你需要使用chown / chmod来确保正确的用户有权访问它们。 有一些工具可以帮助解决这个问题: pauldoo 如果你只是对文本文件的内容感兴趣,那么行结尾是不同的。 看看像dos2unix,这可能是在这里的帮助。 Cheekysoft 正如pauldoo所build议的,像dos2unix这样的工具可能非常有用。 […]

用bash设置一个参数

我经常运行一个简单的bash命令: rpm -Uvh –define "_transaction_color 3" myPackage.rpm 哪个工作正常。 但是现在我试图把它编写成一个bash文件,并且使它更加灵活: #!/bin/bash INSTALL_CMD=rpm INSTALL_OPT="-Uvh –define '_transaction_color 3'" ${INSTALL_CMD} ${INSTALL_OPT} myPackage.rpm 但是,这不断产生错误: error: Macro % has illegal name (%define) 错误来自于如何处理–define和引用的_transaction_color 。 我已经尝试了各种各样的转义,不同的措辞,甚至使INSTALL_OPT数组,处理${INSTALL_OPT[@]} 。 到目前为止,我的尝试没有奏效。 显然,我想要的是非常简单的。 我只是不知道如何完成它。 我怎样才能让bash正确处理我的–define参数?