新安装的devcpp源文件未编译显示下面的东西,没有办法编译

下次自动登录
现在的位置:
& 综合 & 正文
DEV-C++对c文件提示无法编译的问题
为了苦逼的软件可靠性作业,只能写点代码了,上网找到了DEV-C++(),安装完毕,编写了一个Hello world.c程序,编译-&ok,点击运行-&源文件未编译。
百思不得其解,上网搜了下,原来DEV-C++是没有自己的编译器的,它使用的是mingw中的一些东东,或者说源头是gcc的东东,打开路径Dev-Cpp\libexec\gcc\mingw32\3.4.5,发现下面只有一个cc1plus.exe,也就是说只能对c++进行编译,没有cc1.exe。cc1用来对c进行编译,好啦,知道了问题,就可以解决了。
方法1.搞一份cc1.exe。可以选择将cc1plus.exe重命名为cc1.exe(哈哈,我是这么干的,虽然会有问题,暂时勉强用着);还可以到网上去下一份
方法2.下载最新的,然后在Dev-C++中新增一个编译器配置,将其设置为使用MinGW编译。
【上篇】【下篇】devcpp 4.9 9.2 _setup运行时为什么出现源文件未编译
devcpp 4.9 9.2 _setup运行时为什么出现源文件未编译
10-01-11 &  首先看一下配置后的效果:
1.直接在底部文本框中显示运行结果(不需要从键盘输入的时候使用):
2.在cmd中运行结果(需要从键盘输入的时候使用):
快捷键说明:
  在底部文本栏显示结果:Ctrl + ,
  在cmd窗口中显示结果:Ctrl + .
  编译:Ctrl + Shift + B
  编译并运行(在底部文本栏显示结果):Ctrl + Shift + ,
  编译并运行(在cmd窗口中显示结果):Ctrl + Shift + .
  编译:Ctrl + B
  编译并运行(在底部文本栏显示结果):Ctrl + Alt + ,
  编译并运行(在cmd窗口中显示结果):Ctrl + Alt + .
  好吧,接下来让我们开始配置吧!
  1)安装软件,下载地址见:
  2)安装好 ST 和 Dev-C++(或 C-Free 或 MinGW(不推荐,原因见上文下载地址页面))后,需要我们来配置 环境变量,以 win10 为例(其它 windows 系统可自行百度),开始图标点击鼠标右键 --& 系统 --& 高级系统设置 --& 环境变量,视线移到系统变量,找到Path,编辑,新建,添加以下路径(以我的为例,具体看个人安装的位置):D:\Program Files (x86)\Dev-Cpp\MinGW64\bin\&
  其它 windows(注意以英文分号隔开)
  然后确定返回到环境变量窗口,在 系统变量 中添加 新建 下面两项,
    1.变量名:C_INCLUDEDE_PATH  变量值:D:\Program Files (x86)\Dev-Cpp\MinGW64\include\
    2.变量名:LIBRARY_PATH    变量值:D:\Program Files (x86)\Dev-Cpp\MinGW64\lib\
  见图:
  环境变量配置完毕。
  检验:按 win+R 输入 cmd,然后输入 gcc -v, 有结果显示即设置成功,不成功可以重新打开 cmd 再试,一般不用重启电脑,实在不行可以尝试重启电脑再试,再次声明,请确保以上路径是你自己的安装路径,保证在资源管理器中输入这个路径能打开目录!
  上图:检验结果
  3)接下来转到 Sublime Text 开始配置我们的编辑器。这步很简单,只要复制粘贴和可以了,但是当初我配置的时候折腾了好久呢!一下配置文件纯属原创,网上其它版本(大多数吧)写得都很简单,只能实现 Ctrl+B&编译&,Ctrl+Shift+B&运行&有的是&编译后运行&,而 gcc(这里使用的编译器)对 C 和 C++ 的编译是区分开的,有强迫症的我又不喜欢把 C 源文件当作 C++ 来编译,而且这样做本来也不太好,按照网上的配置文件我就需要两个配置文件,需要的时候还得去菜单里切换,而且&运行&和&编译后运行&还不能同时实现,相当麻烦,于是折腾了好久,解决了介个问题,好吧,接下来让我们开始复制粘贴的工作吧。
  1.编译配置文件: Menu --& Tools --& Build System --& New Build System...打开一个文件后复制以下代码,然后保存为 MinGW64-11.sublime-build
  注:如果未安装ConverToUTF8插件,请按照注释中的说明修改(第6行)(关于中文和ConverToUTF8的问题见:)
  MinGW64-11.sublime-build :
"cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}.exe", "-Wall", "-std=c++11"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"encoding": "GBK",  //If you haven`t install ConvertToUTF8, please install it or delete/comment this line or use "encoding": "utf-8",
"shell": true,
"variants":
//Shortcut: Ctrl+Shift+B
"name": "Run", //Build C
"cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}.exe", "-Wall", "-std=c11"]
//Shortcut: Ctrl+,
"name": "RunLocal", //Run in bottom text box
"cmd": ["${file_path}/${file_base_name}"]
//Shortcut: Ctrl+.
"name": "RunCmd",
//Run in cmd window
"cmd": [ "start", "CMD", "/C", "${file_path}/${file_base_name} & pause"]
////Shortcut: Ctrl+Shift+,
"name": "BuildCAndRunLocal",
//Build C & run in bottom text box
"cmd": ["CMD", "/C", "gcc ${file} -o ${file_path}/${file_base_name}.exe -Wall -std=c11 & ${file_path}/${file_base_name}"]
//Shortcut: Ctrl+Shift+.
"name": "BuildCAndRunCmd",
//Build C & run in cmd window
"cmd": ["start", "CMD", "/C", "@echo off & gcc ${file} -o ${file_path}/${file_base_name}.exe -Wall -std=c11 & @echo on & ${file_path}/${file_base_name} & pause"]
//Shortcut: Ctrl+Alt+,
"name": "BuildCppAndRunLocal",
//Build C++ & run in bottom text box
"cmd": ["CMD", "/C", "g++ ${file} -o ${file_path}/${file_base_name}.exe -Wall -std=c++11 & ${file_path}/${file_base_name}"]
//Shortcut: Ctrl+Alt+.
"name": "BuildCppAndRunCmd",
//Build C++ & run in cmd window
"cmd": ["start", "CMD", "/C", "@echo off & g++ ${file} -o ${file_path}/${file_base_name}.exe -Wall -std=c++11 & @echo on & ${file_path}/${file_base_name} & pause"]
  简单的说明一下:gcc 是编译 C 源文件的命令, g++ 是编译 C++ 源文件的命令, -Wall 表示要显示所有可能的 warning,个人觉得这很有必要,程序猿一个很好的习惯就是把 warning 当作 error 来处理,这样才能使自己的代码更安全,-std=c++11 和 -std=c11 表示用C++11 和 C11 标准进行编译,我还有个&MinGW64.sublime-build 配置文件是不含这两个指令的,MinGW 默认并不是用 C/C++11 标准编译的,有时候标准不同会有很大不同,所以建议两个编译配置文件都加上。
  2.快捷键配置文件:Menu --& Preferences --& Key Bindings - User,复制粘贴,文件名为Default (Windows).sublime-keymap
  Default (Windows).sublime-keymap :
{ "keys": ["ctrl+0"], "command": "build", "args": {"variant": "BuildC" } },
{ "keys": ["ctrl+,"], "command": "build", "args": {"variant": "RunLocal" } },
{ "keys": ["ctrl+."], "command": "build", "args": {"variant": "RunCmd" } },
{ "keys": ["ctrl+shift+,"], "command": "build", "args": {"variant": "BuildCAndRunLocal" } },
{ "keys": ["ctrl+shift+."], "command": "build", "args": {"variant": "BuildCAndRunCmd" } },
{ "keys": ["ctrl+alt+,"], "command": "build", "args": {"variant": "BuildCppAndRunLocal" } },
{ "keys": ["ctrl+alt+."], "command": "build", "args": {"variant": "BuildCppAndRunCmd" } }
  注&:如果快捷键不适合个人,可自行更改,但是要不与默认快捷键重复真的很难,查看默认快捷键打开&Menu --& Preferences --& Key Bindings - Default 即可,要查看自己想使用的快捷键是否和默认的重复,可在这个文件里按 Ctrl+F 输入内容即可搜索,Ctrl+F3 查找下一个,Shift+F3 上一个。
注:目前sublime仍有部分问题,但用来平时学习的时候做点小练习是非常合适的,比大部分IDE都方便很多,主要问题有:
  1)保存路径中不能含有空格,只要保证文件都保存在常用保存代码的地方然后用_代替空格就行啦,没多大麻烦,对日常练习影响也不大。
  2)然后就是不能方便地编译链接多个源文件,只能通过 make 来完成,至于 make 是什么这里就不作讲解了,linux/unix 下做开发的应该比较熟悉, windows 下大多 make 的工作都由 IDE 替我们完成了,所以 windows 程序猿可能对 make 会相对陌生。所以目前 ST 只能方便地编译单个文件,当然如果你懂且愿意用 make,就另当别论了。
阅读(...) 评论()在ubuntu下使用cmake进行opencv的配置和Windows下进行使用cmake编译源代码比较,opencv3进行g++例子程序编译、动态库的制作
1.首先安装的是cmake软件,使用指令:
apt-get install cmake
接着查看版本,测试是否安装成功:
root@emouse:/home# cmake --version
cmake version 2.8.10.2
由于我们需要时有的是cmake界面来配置,所以我么要安装器ui界面,其指令是:
apt-get install cmake-gui
如果觉得自带的cmake版本不符合要求,可以自行下载安装包,其安装过程是:
下载最新版的安装包:
http://www.cmake.org/cmake/resources/software.html
这里下载已经编译好的,这样只需要解压至需要的目录下即可使用:
tar zxvf cmake-2.8.10.2-Linux-i386.tar.gz –C /usr/local/
设置环境变量:
sudo gedit /home/emouse/.bashrc
在打开的文件后添加:
export PATH=$PATH:/usr/local/cmake-2.8.10.2-Linux-i386/bin
安装完成后就可以使用上面通过检查其版本来看是否安装完成。
2、先安装 libgtk2.0-dev 和 pkg-config,,否则后期编译运行程序会出现类似如下的问题:
OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file
/usr/local/opencv/OpenCV-2.0.0/src/highgui/window.cpp, line 100
terminate called after throwing an instance of 'cv::Exception'
通过网络获取安装:
# apt-get install libgtk2.0-dev
# apt-get install pkg-config
2、下载OpenCV ,文件名:OpenCV-2.4.3.tar.bz2,下载地址:
http://www.opencv.org.cn/index.php/Download
#tar jxvf OpenCV-2.4.3.tar.bz2
得到文件夹 OpenCV-2.4.3
此时在同级目录下新建一个文件夹opencv-x86作为PC编译目录,记住其实这个文件是为了存放一些编译过程生成的杂碎文件和一个最重要的makefile文件。
注意:不过现在的opencv提供的linux不是tar包了,而是zip包,其解压指令要使用unzip,当使用cd定位到文件所在目录后,使用指令为:unzip OpenCV-2.4.4.zip
3、#cmake-gui 打开cmake的gui界面,开始进行配置。
cmake主要用于进行一些配置设定,从而生成用于编译安装的makefile文件,通过界面进行参数的配置和设定,非常直观、方便。在配置中指定源码和编译目录以及生成方式。
按照下图的步骤进行配置:
点击Finish后cmake即载入默认配置,如下图所示:
当第一次configure配置完后,再次点击configure,最后点击generate,当出现有generate Done则表示完成。其中的/usr/local是用于存放生成的lib与dll文件,上面的CONFIGURATION_TYPES指的是进行两钟模式的lib和dll文夹生成,其是这一步还不会生成lib和dll,而是生成makefile文件,里面包含了我们的一些设置,为了生成lib和dll。下图是我们在Windows下安装opencv后自带的库文件目录(这是opencv以为我们编译好的,所以我们可以直接使用,而不需再自行编译产生库文件,但是当VS的版本与opencv的版本不兼容时,可以自行编译产生相应的库文件来解决)
另一种通过终端指令来配置相应的参数来生成makefile文件:
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/OpenCV
(这里的PREFIX路径是自己定义的位置,其替代了默认路径/usr/local)如果使用全部使用默认路径则可以直接使用指令:
cmake .注意别忘了这个点。只是这里通过图形界面的方式来进行配置,更加直观方便。
4.接下来使用cd定位到opencv-x86文件夹下使用指令:
make install
这上面的两条指令主要是为了对应编译器下的dll、lib文件,我们可以通过指令来查看make是否成功,然后再执行make install指令,检测正确与否指令是:
&span style="font-size:18"&echo
输入这条命令回车后,输出的结果是0,那么就说明成功编译,否则就是出错了,echo
$?表示检查上一条命令的退出状态,程序正常退出返回0!所以这是为什么我们的main函数要有返回值并且是正确返回0。
其跟我们在Windows下使用cmake生成库的步骤相同,其在使用cmake后也分为两步:
第一步:在debug模式下,选择解决方案“Opencv”,点击右键,运行“重新生成解决方案”;
第二步:生成成功后,再CMakeTargets目录下选择INSTALL,右键运行。
而release模式下也是这样子的两个步骤即可,其流程图如下:
5.接下来就是配置lib库:
在linux系统下安装了带有动态库的程序后,会在ld.so.conf.d文件目录下生产相应程序的.conf文件,其里面包含了
此软件运行需要装载的动态库路径,所以我们需要把我们使用cmake配置时的路径,我们使用的是默认路径,则我们的指令是:
sudo gedit /etc/ld.so.conf.d/opencv.conf
打开配置文件后就输入路径(这个文件夹一般是空的),其为:
/usr/local/lib
注意:在默认路径下在生成lib是会自动生成一个lib文件夹的。完成上的步骤后,这里的库文件仍然不能被调用,因为为linux系统的特性是,新加载的库文件需要缓存到一个叫ld.so.cache文件里(其里面包含了/etc/ld.so.conf中指定的目录中查找到的所有的库,按顺序排列),否则使用该软件是会报错,说缺少xxx库,而使用的指令是:
6.最后配置环境变量
其中pkgconfig文件夹里包含了软件的.pc文件,这个是包含了库的路径之类得东西,使用的指令是:
gedit /etc/bash.bashrc在文件后添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH保存退出,重启计算机后就可以使用opencv例程来测试配置成功与否。
下面的一些是一些小知识,看与不看都可以,可以直接进入步骤7环节,其中ubuntu里的文件名字与其他linux系统有些差别,其如下:
在默认情况下,每个支持 pkgconfig 的库对应的 .pc 文件在安装后都位于安装目录中的 lib/pkgconfig 目录下。例如,我们在上面已经将 Glib 安装在 /opt/gtk 目录下了,那么这个 Glib 库对应的 .pc 文件是 /opt/gtk/lib/pkgconfig 目录下一个叫 glib-2.0.pc
的文件,这里面包含有软件的库lib位置,dll位置等,其内容为:
prefix=/opt/gtk/
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: GLib
Description: C Utility Library
Version: 2.12.13
Libs: -L${libdir} -lglib-2.0
Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include 注意:为什么需要配置上面的路径呢?因为其是为了加快库的读取。
下面以Glib库为例子:
安装完 Glib 后,在 bash 中应该进行如下设置:
$ export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig:$PKG_CONFIG_PATH
可以执行下面的命令检查是否 /opt/gtk/lib/pkgconfig 路径已经设置在 PKG_CONFIG_PATH 环境变量中:
$ echo $PKG_CONFIG_PATH
这样设置之后,使用 Glib 库的其它程序或库在编译的时候 pkg-config 就知道首先要到 /opt/gtk/lib/pkgconfig 这个目录中去寻找 glib-2.0.pc 了(GTK+ 和其它的依赖库的 .pc 文件也将拷贝到这里,也会首先到这里搜索它们对应的 .pc 文件)。之后,通过 pkg-config 就可以把其中库的编译和连接参数提取出来供程序在编译和连接时使用。
7.使用opencv例子程序来进行测试配置成功与否。
先在root目录下建立一个opencv_samples文件,然后把opencv自带的C文件夹下的例子程序复制到opencv_samples文件夹下,
其中在make install过程时会默认把资源文件放到/usr/local/share/OpenCV/文件下,其里面包含的内容是一些人脸、人眼级联器等数据,所以复制文件的指令是:
mkdir openCV_samples
cp OpenCV-2.1.0/samples/c/* openCV_samples
cd openCV_samples/
chmod +x build_all.sh
./build_all.sh
接着就是执行可执行文件,在当前目录下使用 ls 指令来查看哪些文件是可以运行的(一般可执行文件的颜色是不同的),接着就是执行它,并输入一些数据,如下:
./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg结果为:
8.到此步位置如果没问题的话,opencv的配置已经完成,但是我们如何判断配置没有问题呢?
我们通过如下指令:
pkg-config --cflags opencv输出结果为:
解释:上面的指令指的是输出opencv.pc里面的头文件路径,因为在编译程序的时候需要把头文件的路径、库文件告诉编译器,在include包含的头文件才不会出现未定义的情况。
第二个指令是:
pkg-config --libs opencv输出结果为:
这条指令的作用是把所需的库文件进行加载进来,而不是纯粹的指出路径。如果这两条指令都有结果输出,则证明opencv的配置路径正确,
下面主要是对自己写的例子进行编译,刚开始我使用的是opencv打开摄像头然后抓取帧进行显示的例子,当时遇到了两个问题,第一个就是编译,没有区别gcc、g++。第二个是opencv自身读取摄像头的接口问题,出现读取的图像乱码等,要使用V4l2。
首先,我使用的是opencv3里的例程,例子随便,正确的编译指令是使用g++,为:
其中包含pkg的两个点是键盘左上角的那个按键---这个很重要,还有就是这两个pkg在linux下使用了第三方库时都是必须写上去的,
到此步位置,祝贺完成任务。
小知识:就是关于修改了bash.bashrc里的文件后,因为其是开机时加载的,修改后要生效就必须重新加载,有两个办法:第一重新开机;第二使用指令
source /etc/bash.bash.rc
其中的source也可以使用‘ . ’黑点代替。
接着就是里面加载pkgconfig文件的方法,因为我们的**.pc文件是存在pkgconfig文件夹下的,所以我们需要在bash.bashrc文件(这个文件是ubuntu系统里的,其它系统的文件可能不一样,我们只是需要把其pc文件的加载路径放大开机加载的文件里就行)里指出其路径,我的指令是:
其中,pkg_congfig_path名字可以修改的,
其中linux下的动态库与静态库的制作:
linux 下动态链接库的制作与使用动态链接库*.so的编译与使用- -动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一点帮助。1、动态库的编译下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。so_test.h:#include &stdio.h&#include &stdlib.h&void test_a();void test_b();void test_c();test_a.c:#include "so_test.h"void test_a(){printf("this is in test_a...\n");}test_b.c:#include "so_test.h"void test_b(){printf("this is in test_b...\n");}test_a.c:#include "so_test.h"void test_c(){printf("this is in test_c...\n");}将这几个文件编译成一个动态库:libtest.so$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so2、动态库的链接在1、中,我们已经成功生成了一个自己的动态链接库libtest.so,下面我们通过一个程序来调用这个库里的函数。程序的源文件为:test.c。test.c:#include "so_test.h"int main(){test_a();test_b();test_c();return 0;}
将test.c与动态库libtest.so链接生成执行文件test:$ gcc test.c -L. -ltest -o test
测试是否动态连接,如果列出libtest.so,那么应该是连接正常了$ ldd test
执行test,可以看到它是如何调用动态库中的函数的。3、编译参数解析最主要的是GCC命令行的一个选项:
-shared 该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号),不用该标志外部程序无法连接。相当于一个可执行文件
-fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。
-L.:表示要连接的库在当前目录中
-ltest:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称
LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径。
当然如果有root权限的话,可以修改/etc/ld.so.conf文件,然后调用 /sbin/ldconfig来达到同样的目的,不过如果没有root权限,那么只能采用输出LD_LIBRARY_PATH的方法了。4、注意
调用动态库的时候有几个问题会经常碰到,有时,明明已经将库的头文件所在目录 通过 “-I” include进来了,库所在文件通过 “-L”参数引导,并指定了“-l”的库名,但通过ldd命令察看时,就是死活找不到你指定链接的so文件,这时你要作的就是通过修改LD_LIBRARY_PATH或者/etc/ld.so.conf文件来指定动态库的目录。通常这样做就可以解决库无法链接的问题了
附加的常识:
编译时,标准的头文件在 下,系统编译时默认自动到这搜索。
若要自定义的头文件,用户可通过在命令中加–
&库路径到额外指定的头文件搜索自己要包含的头文件。
而系统默认的链接库搜索路径在
其中:–l指定要链接的具体库名(lib的第一个字母)
-L 到额外库搜索的路径
解释:代表链接 库,其中库在下的名是
代表路径在下
参考文献:
看过本文的人也看了:
我要留言技术领域:
取消收藏确定要取消收藏吗?
删除图谱提示你保存在该图谱下的知识内容也会被删除,建议你先将内容移到其他图谱中。你确定要删除知识图谱及其内容吗?
删除节点提示无法删除该知识节点,因该节点下仍保存有相关知识内容!
删除节点提示你确定要删除该知识节点吗?

我要回帖

更多关于 devcpp中文版下载 的文章

 

随机推荐