Articles of 本地

本地GCC 5二进制文件太大(libexec)

所以我在一个旧的CentOS 6.6发行版,并从源代码编译GCC 5.2。 当我安装它时,它创build了libexec下的5.2.0子文件夹,但是二进制文件cc1和cc1 plus是巨大的! 这是我如何build立它 Using built-in specs. COLLECT_GCC=./gcc COLLECT_LTO_WRAPPER=/usr2/libexec/gcc/i686-redhat-linux-gnu/5.2.0/lto-wrapper Target: i686-redhat-linux-gnu Configured with: ../configure –prefix=/usr2 –disable-multilib –enable-languages=c,c++ –enable-gnu-unique-object –disable-dssi –enable-libstdcxx-threads –enable-libstdcxx-time –enable-shared –enable-__cxa_atexit –disable-libunwind-exceptions –disable-libada –host=i686-redhat-linux-gnu –build=i686-redhat-linux-gnu –target=i686-redhat-linux-gnu –with-default-libstdcxx-abi=gcc4-compatible –with-arch=i686 –enable-linker-build-id –with-system-zlib –with-default-libstdcxx-abi=gcc4-compatible Thread model: posix gcc version 5.2.0 (GCC) 这是发行版4.4.7的ls -rwxr-xr-x 1 root root 8566416 Jul 23 00:19 cc1 -rwxr-xr-x 1 root […]

父目录的fsync是否保证所有recursion子目录的元数据的同步?

目前我正在编写一个Android应用程序,它需要在本机端处理大量文件。 最近我遇到了几个数据丢失或不一致的问题,同时更新或重命名这些文件。 (所有这些文件都存储在公共父/目录的几个子目录中。) 阅读了几篇关于fsync()的文章后,我决定使用它。 不过我有一件事不清楚: 在父目录上调用fsync()是否可以保证所有子目录的元数据同步recursion? 也就是说,可以说我在一个公共的父目录下的不同子目录中进行了很多重命名操作。 那么我应该分别在每个子目录上调用fsync()还是在父目录上调用fsync()足以确保所有子目录(及其子目录)的元数据与物理设备同步? 基本上这个想法是通过避免多个fsync()调用来节省时间。 或者,与每个单独的子目录上的fsync()相比,顶级目录上的fsync()是否需要更多时间? (假设顶层目录下的fysnc()同步所有的子目录元数据)

udev .rules文件以本地用户身份运行?

我有我的代码,每次udev检测到新的USB将运行。 当我作为本地用户运行它时,我的代码工作正常。 但是当我使用udev.rules文件时会失败,因为它以root身份运行我的脚本。 我如何以本地用户身份运行“.rules”? 谢谢。

是结构统计时间GMT?

struct stat中的一个字段是st_mtime。 我认为这是自1970年1月1日以来的秒数。是格林尼治标准时间还是当地时间?

使用Maven使用OpenCV构buildJava项目

我需要build立一个OpenCV的项目。 这将是伟大的,但图书馆不进入库java.library.path出于某种原因。 而当我尝试运行使用库的代码时,我得到这个错误: * java.lang.UnsatisfiedLinkError:java.library.path中没有jniopencv_highgui * 的pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>ru.intemsys.reget.server</groupId> <artifactId>reget-server</artifactId> <version>0.1-alpha</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.build.timestamp.format>yyyyMMddhhmm</maven.build.timestamp.format> <platform.name>${os.name}-${os.arch}</platform.name> <product.year>2014</product.year> <jdkVersion>1.6</jdkVersion> <javacpp.version>0.7</javacpp.version> <javacv.version>0.7</javacv.version> </properties> <dependencies> <dependency> <groupId>commons-daemon</groupId> <artifactId>commons-daemon</artifactId> <version>1.0.10</version> </dependency> <dependency> <groupId>com.googlecode.javacpp</groupId> <artifactId>javacpp</artifactId> <version>${javacpp.version}</version> </dependency> <dependency> <groupId>com.googlecode.javacv</groupId> <artifactId>javacv</artifactId> <version>${javacv.version}</version> </dependency> <dependency> <groupId>com.googlecode.javacv</groupId> <artifactId>javacv</artifactId> <version>${javacv.version}</version> <classifier>linux-x86</classifier> </dependency> <dependency> <groupId>com.googlecode.javacv</groupId> <artifactId>javacv</artifactId> <version>${javacv.version}</version> <classifier>linux-x86_64</classifier> </dependency> <dependency> […]

Java中的JIT编译如何将dynamic编译指令加载到内存中?

在Java中,JVM(例如HotSpot)能够进行JIT编译,并且通过将字节码编译为本地代码来加速执行。 我的问题是,这在技术上是如何发生的? 我的理解是,现代的处理器将内存区域标记为只读的部分,以及为了防止恶意代码执行而可执行的部分。 所以,JVM不能真正将新的“可执行代码”写入它所访问的内存空间(即自修改代码)。 所以,我猜测JVM生成本地代码,将其写入一个文件,然后使用操作系统服务将该本地代码dynamic加载到内存中,并维护一些本地代码(函数)位置地址的内部映射表在操作系统加载这个dynamic代码之后的内存中,所以它可以分支到这些本地指令。 我看到了这个答案: JIT如何编译代码注入内存并执行? ,但我很困惑,为什么操作系统将允许用户程序READ + EXECUTE内存区域。 其他操作系统,如Linux等提供了类似的东西,以便JIT工作? 有人能帮助澄清我的理解吗?

如何在没有完整path的情况下复制文件夹和父文件夹

这是一个基本的问题,但我正在努力寻找一个体面的解决scheme。 这阻碍了我的脚本自动化。 我有以下path。 /home/hassan/Dyna/ProjectSimulation 在项目模拟中,我有3个文件夹 friction time force 喜欢 /home/hassan/Dyna/ProjectSimulation/friction 现在我在这摩擦文件夹中有一个文件friction1.txt,我想将其复制到ProjectSimulation。 是否有可能避免完整的path,只是一步下来? 另外,如果我不得不将这个摩擦力1.txt复制到文件夹强制,反正有避免完整的path。 我的意思是我有一个子程序,但这是path依赖的,每当我运行它,我必须在同一个文件夹中运行,然后复制我的结果,所以我只能运行我的模拟实例。 专家请指导我。 PS:这是600线壳体的一部分。

为什么本机库在使用java时使用的内存量是Linux下的C-Programm使用量的1.5倍?

我用C编写了一个消耗大量内存(数百万个小块)的库。 我已经写了使用这个库的ac程序。 而且我写了一个使用相同库的java程序。 Java程序是库周围的一个非常薄的层。 基本上只有一种被称为的本地方法,做所有的工作,并在几小时后返回。 Java和使用java调用接口的本地库之间没有进一步的通信。 也没有消耗值得注意的内存的Java对象。 所以c程序和Java程序非常相似。 整个计算/内存分配发生在本地库内部。 仍然。 c程序执行时消耗3GB的内存。 但Java程序消耗4.3GB! (VIRT金额由上方报告) 我检查了Java进程的内存映射(使用pmap)。 图书馆只用了40MB。 所以由Java加载的其他库不是原因。 有没有人有这种行为的解释? 编辑 :感谢迄今为止的答案。 为了使它更清晰一点:java代码除了调用本地库ONCE ! java堆是标准大小(可能是60MB),不能使用(除了包含main方法和调用本地库的其他类之外)。 本地库方法是一个长期运行的方法,并做了很多malloc和释放。 碎片是我自己也想到的一个解释。 但是由于没有Java代码活动,Java程序和c程序的碎片行为应该是相同的。 由于它不同,我还假定在c程序或Java程序中运行时使用的malloc实现是不同的。

你如何使Linux的GUI?

我的主要经验是C ​​&& C ++,所以我宁愿留在他们身边。 我不想使用任何类似QT,GTK或wxWidgets或任何工具包。 我想学习本地编程,这种做法失败了。 考虑到这一点,我也想避免Java。 我了解gnome,xfce和KDE,这些都是适用于Linux的桌面环境,通常安装的是X(Xorg)。 在为Linux编码时,您是否为X或桌面环境编码? 有没有一个标准的Linux头(如win32有windows.h)的Linux? 或者每种桌面环境的编码方式都不同? 任何帮助是极大的赞赏。

制作本地软件包安装程序

我将为我的家庭networking构build一个软件包pipe理器和安装程序,但我不确定应该使用的技术。 我正在想WPF的接口和SQL实际存储包数据,以及某种脚本的可configuration安装。 但是,我不知道我是否错过了什么。 总之,这是我的问题: 制定这个计划需要哪些技术? 有没有这样的东西呢? 我们的服务器上应该有多less钱,以及我要build立的客户端应该多less钱? 我是否完全错误的方式? 笔记: 我想使用.NET,因为这是我的大部分经验 它将运行在Windows 7和一台或两台vista / xp机器上。 该服务器是一个Windows家庭服务器。 这些软件包将是常规安装程序/程序的更新,如守护程序工具,Notepad ++或7zip。 这也是磁盘映像程序,以及可能没有安装程序的程序。