当使用cmake编译caffe的情况下,在 cmake生成Makefile时会自动找到系统安装的glog,gflag,但是如是我们自己编译了一个glog,gflag,并没有安装在(/usr)系统目录下, 要想在cmake编译caffe时指定glog,gflag路径,需要下面两步: 定义GLOG_ROOT_DIR,GFLAGS_ROOT_DIR参数 #$caffe_root caffe源码根目录 cmake ,cmake也不会找到该路径下的glog,gflag,如果你的/usr下安装了glog,gflag,它依然会找到系统路径下的版本。 ,这有一个优先序问题,如果没有指定了NO_DEFAULT_PATH,则会先查找默认的系统库路径 如果指定了NO_DEFAULT_PATH,则只查找PATHS提供的路径,不会查找系统库路径。 因为所以原始代码中没有加NO_DEFAULT_PATH导致每次只能找到系统路径下的库。 如何保证PATHS指定的路径优先被搜索呢?
qsort是一个C语言的排序函数,这不是我们讨论的重点, jint * (JNICALL *GetIntArrayElements) (JNIEnv *env, jintArray array, jboolean *isCopy); 这个函数的作用是得到一个jni数组元素的指针,jintarray里面的每一个元素都是jint类型,数组的特性就是第一个元素的地址就是它的指针,根据元素类型就可以往下得到所有元素,这个函数的第三元素是一个jboolean类型的指针,它的含义就是说如果我现在在C语言层处理这个数组,它要不要复制,不复制代表处理的是和JAVA同一个内存即数组,这里官方建议填NULL,那么数组排序后,操作的也是同一块内存为什么还要去同步一下呢?这里我打印了一下他们的地址,发现不同,由此可以得出NULL和JNI_TRUE都会复制内存,如果有兴趣的同学可以试一下JNI_FALUSE,这个参数同样还是复制了,而填入JNI_TURE后再同步内存会提示JVM运行时的异常,所以不管是哪一个参数其实都不是操作同一块内存,最后如果要在JAVA层去处理结果一定要同步一下内存。
我们交叉编译Linux的时候可能需要添加新的头文件,这个头文件放在哪里。编译应用程序和内核程序不太一样,分别说。 编译应用程序 编译器需要找到头文件有几种办法 编译时-I指定路径搜索 arm-linux-gnueabihf-gcc testtty1.c -o testtty1 -I/linux 上述例子中的头文件存于根目录下的 (具体路径)export C_INCLUDE_PATH 就和设置交叉编译工具链方式一样 默认路径 头文件分两种#include <>和#include ""。 #include <>使用的是默认交叉编译环境路径,#include ""默认使用的是当前路径。 编译内核程序 内核编译是在需要内核的路径,所用使用上述默认路径。#include <>使用的是内核默认路径。#include ""默认使用的是当前路径,当前目录下找不到会再去内核默认路径找的。
代码编译的时候,编译服务器莫名其妙的报以下错误: fatal error: error writing to /tmp/ccGjoKTF.s:No space left on device 奇怪了,编译脚本中并没有往 仔细看了下错误信息,这个ccGjoKTF.s应该是编译过程的中间文件,其中文件名是随机值。然而makefile中并未要求保留汇编代码。 写了个demo,用strace(strace gcc test)跟踪了下,发现gcc不仅把汇编代码(.s)写到了tmp目录,也把二进制文件(.o)写到了tmp目录,并且编译完成自动删除临时文件。 如果在编译的时候使用-S或者-C选项,则会把对应的中间文件保存在当前目录,而不是tmp目录。 如果在编译的时候使用-save-temps选项,也会把中间产物保存在当前目录,并且编译完成不删除临时文件。 查资料发现原来gcc默认把编译过程中的中间文件写到tmp目录。
转载请注明:转载自 祥的博客 原文链接:https://blog.csdn.net/humanking7/article/details/80393070 ---- 先放资源 问题 编译PyQT5 step1 错误4.2: 要禁掉部分组件 step5. nmake install 测试 小结 干货 ---- 先放资源 需要环境为: VS2013 Python3.6.1 x86 1.编译好的sip-4.19.8 原因无他,就是有Qt的基础,而且够用、效率高于标准库的Tkinter 但是,网上要么用pip,要么是自己编译 pip3 install PyQT5 但是用pip的好处和坏处都很明显 好处: 方便 坏处: 自己编译,对于用惯了集成开发环境的我,简直是噩梦,网上教程又少,而且大家的情况都不一样,所以我也是摸着石头过河。 编译PyQT5 ---- step1. PyQT5: https://sourceforge.net/projects/pyqt/files/PyQt5/ 我选择: PyQt-gpl-5.5.zip 编译好的是针对 Python3.4
可以按如下路径打开资源库中的目录,也可以打开终端输入cd命令并加上如下参数: cd .
原生回传H5本地图片地址仅支持H5资源放置到项目/手机存储中使用 H5资源放置到服务器后无法读取插件返回的Android本地路径 要求(原生): 1. H5资源需放置到App项目assets目录/手机存储 使用到依赖Lrz(Js简化读取) 1. Lrz支持传入的内容为File对象/图片本地路径/图片网络路径 2. }) .always(() => { alwaysCallback && alwaysCallback() }) }, /**将选择后的第一张图片路径转为
<title></title>
</head>
<body>
</body>
</html>
浏览器展示如下:
绝对路径和相对路径 绝对地址:相对于磁盘的位置去定位文件的地址
相对地址:相对于引用文件本身去定位被引用的文件地址
绝对地址在整体文件迁移时会因为磁盘和顶层目录的改变而找不到文件,相对路径就没有这个问题。 相对路径的定义技巧:
“ ./ ” 表示当前文件所在目录下,比如:“./pic.jpg” 表示当前目录下的pic.jpg的图片,这个使用时可以省略。
编译环境 maven jdk8 idea 2. 编译版本: SpringV5.2.7RELEASE+GradleWapper+jdk1.8.0_131编译 二. 备注: 我在导入项目到idea的时候, 不能够选择使用的gradle编译类型(使用系统的gradle还是gradleWrapper), 所以, 我是自己安装了Gradle, 然后编译的. 编译Spring源码项目 1. 导入项目到idea中, 进行编译 我这里导入代码, 自动就会进行编译了. 不需要额外的操作. 这个和idea的版本有关,我的idea是2020.1的 ? 最后提示finished就ok了. 五. 看到上面编译成功,并且有打印结果, 就说明成功了.
memcached.so) eaccelerator ZendOptimizer MySQL5.5 php5.3 nginx1.2.7 memcached tokyocabinet tokyotyrant #路径 flex libXpm-devel fontconfig-devel \ pcre-devel sqlite-devel perl-ExtUtils-Embed neon-devel # centos 5 --prefix=/data/service/common/apr-util \ --with-apr=/data/service/common/apr make && make install # 编译 /configure.apxs make && make instal # 编译apache2服务 mod_php.so . /data/service/vsftpd/man/vsftpd.conf.5 \ && chmod 644 /data/service/vsftpd/man/vsftpd.conf.5 cp vsftpd.conf
还是容器里编译比较快。提供一份在容器里成功编译出来 impalad 的日志。 heimdal libidn11 libisc-export160 libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 heimdal libidn11 libisc-export160 libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 /krb5-user_1.13.2+dfsg-5ubuntu2.2_amd64.deb ... Unpacking krb5-user (1.13.2+dfsg-5ubuntu2.2) ... /krb5-kdc_1.13.2+dfsg-5ubuntu2.2_amd64.deb ... Unpacking krb5-kdc (1.13.2+dfsg-5ubuntu2.2) ...
总所周知,像C语言这类的编译语言,都是将人类可读的源代码“编译”成机器能识别的“机器代码”,然后方能执行的。而我们通常所说的“编译”,实际上是指的是编译系统,一共包含4个阶段。 即:预处理,编译,汇编,链接。而正是这四个阶段所需要的预处理器、编译器、汇编器、链接器构成了编译系统(compilation system)。 hello.c" 2 # 1 "<built-in>" 3 # 1 "<command-line>" 4 # 1 "/usr/include/stdc-predef.h" 1 3 4 5 4 262 void *__pad1; 263 void *__pad2; 264 void *__pad3; 265 void *__pad4; 266 size_t __pad5; 自此,编译系统的整个过程大致如此。总结一下,从源程序到目标文件(可执行文件)的转化是通过编译系统完成的,编译系统包含四个阶段:预处理,编译,汇编,链接。
QT5.1编译后的安装目录问题(硬路径问题) 这个是我的编译参数: configure -ltcg -confirm-license -opensource -platform win32-msvc2010 tests -nomake examples -nomake demos -mp -openssl-linked OPENSSL_LIBS="-lssleay32 -llibeay32" nmake编译过程是一路顺利 ,没有发生过错误提示,然后是nmake install也顺利完成,用VSAddin导入VS2010中也能顺利编译QT程序 唯一奇怪的就是 -prefix "D:\QT\5.1.0_vc2010_x64 " 定义的安装目录,完全不能改,无论是修改5.1.0_vc2010_x64的目录名或者将5.1.0_vc2010_x64移到其他目录,这个编译的版本就不能工作了,连bin下的QT几个自编译的软件也打不开
Linux环境下安装 PHP 5.4.3 报 configure error xml2-config not found. please check your libxml2 installation 错误
e.printStackTrace(); } } public void showURL() throws IOException { // 第一种:获取类加载的根路径 this.getClass().getResource("/").getPath()); System.out.println(f); // 获取当前类的所在工程路径 File(this.getClass().getResource("").getPath()); System.out.println(f2); // 第二种:获取项目路径 /* * 结果: C:\Documents and Settings\Administrator\workspace\projectName * 获取当前工程路径 */ // 第五种: 获取所有的类路径 包括jar包的路径 System.out.println(System.getProperty("java.class.path
7-5 堆中的路径 (25 分) 将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。 输入格式: 每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。 输出格式: 对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。 输入样例: 5 3 46 23 26 24 10 5 4 3 输出样例: 24 23 10 46 23 10 26 10 &:这题完全是运用了堆的性质,虽然没有直接建堆,但是可以用个数组来模拟一下。
5. 早期编译优化 早期编译优化主要指编译期进行的优化。 还有一个重要的动作称为常量折叠,这使得a=1+2比起a=3不会增加任何运算量 数据及控制流分析 数据及控制流分析是对程序上下文逻辑更进一步的验证,可以检查出诸如程序局部变量在使用前是否赋值、方法的每条路径是否都有返回值 遍历循环 遍历循环语句是java5的新特征之一,在遍历数组、集合方面,为开发人员提供了极大的方便。 public void circle() { Integer[] array = { 1, 2, 3, 4, 5 }; for (Integer i : array) { System.out.println 变长参数 Arrays.asList(1, 2, 3, 4, 5); 条件编译 条件编译也是java语言的一种语法糖,根据布尔常量值的真假,编译器将会把分支中不成立的代码块消除掉。
我们所需要做的就是把模块的路径和名称添加到这个文件中即可。 dependencies { compile project(':library') } 为了在一个Module中添加一个依赖Lib,需要使用project()这个函数,并且将该Lib的路径作为参数 像这种目录结构,我们可以在settings.gradle中使用以下声明: include ':app', ':libraries:library1', ':libraries:library2' 所有的路径都是相对于根目录而言的 这也就是为什么你应该在Module中使用相对于根目录的路径进行依赖。Gradle总是会根据根目录来配置依赖关系。 当你修改路径到一个特殊的Module时,Gradle将只会执行单独的模块,即使你在Project的根目录下使用Gradle Wrapper的时候也一样。例如,执行..
开发与算法学习社区 博主个人主页:Killing Vibe的博客 欢迎大家加入,一起交流学习~~ 问题描述 Maven项目下,从resouces目录下把文件读入内存时,例如将sql文件用文件输入流读入时,编译时运行正常 (一般不使用绝对路径,可移植性太差) 这个时候,正常去在项目下编译运行时没有任何问题的,但我们把这个项目打包成可执行jar包的时候,在终端运行这个jar包,就会报错,系统找不到指定的这个文件路径: 原因就在于此时打包后的 jar包默认是在target文件夹下,而我们的代码默认的工作目录是项目的目录,所以一旦在jar包所在目录运行这个jar包,相对路径就不对了,就会报路径错误。 注:已有类就是项目文件夹下的任何一个类,比如我在src/main/java下写了一个叫做DBUtil的类 因为项目中的源文件打包编译之后都会放在 target 文件夹下的 classes 文件夹中(包括资源文件 ),而刚好这个jar包也是默认放在target文件夹下,所以两者工作目录相同,就不会报错 简单解释一下这个方法的原理: 调用DBUtil.class.getClassLoader()就会获取到编译后的classes
Xpath介绍 XPath 使用路径表达式在 XML 文档中进行导航 XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。 节点是通过沿着路径或者 step 来选取的。 注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径! 在下面的表格中,列出了一些路径表达式,以及这些表达式的结果: 路径表达式 结果 /bookstore/* 选取 bookstore 元素的所有子元素。 //* 选取文档中的所有元素。 选取若干路径 通过在路径表达式中使用”|”运算符,您可以选取若干个路径。