cmakeiflinux
❶ linux基本命令
Linux 对我们的生活产生了巨大的冲击。至少你的安卓手机使用的就是 Linux 核心。尽管如此,在第一次开始使用 Linux 时你还是会感到难以下手。因为在 Linux 中,通常需要使用终端命令来取代 Windows 系统中的点击启动图标操作。但是不必担心,这里我们会介绍 10 个 Linux 基本命令来帮助你开启 Linux 神秘之旅。
帮助新手走出第一步的 10 个 Linux 基本命令
当我们谈论 Linux 命令时,实质上是在谈论 Linux 系统本身。这短短的 10 个 Linux 基本命令不会让你变成天才或者 Linux 专家,但是能帮助你轻松开始 Linux 之旅。使用这些基本命令会帮助新手们完成 Linux 的日常任务,由于它们的使用频率如此至高,所以我更乐意称他们为 Linux 命令之王!
让我们开始学习这 10 条 Linux 基本命令吧。
1. sudo
这条命令的意思是“以超级用户的身份执行”,是 SuperUserDo 的简写,它是新手将要用到的最重要的一条 Linux 命令。当一条单行命令需要 root 权限的时候,sudo命令就派上用场了。你可以在每一条需要 root 权限的命令前都加上sudo。
$ sudo su
2. ls
跟其他人一样,你肯定也经常想看看目录下都有些什么东西。使用列表命令,终端会把当前工作目录下所有的文件以及文件夹展示给你。比如说,我当前处在 /home 文件夹中,我想看看 /home 文件夹中都有哪些文件和目录。
/home$ ls
在 /home 中执行ls命令将会返回类似下面的内容:
imad lost+found
3. cd
变更目录命令(cd)是终端中总会被用到的主要命令。它是最常用到的 Linux 基本命令之一。此命令使用非常简单,当你打算从当前目录跳转至某个文件夹时,只需要将文件夹键入此命令之后即可。如果你想跳转至上层目录,只需要在此命令之后键入两个点 (..) 就可以了。 举个例子,我现在处在 /home 目录中,我想移动到 /home 目录中的 usr 文件夹下,可以通过以下命令来完成操作。
/home $ cd usr
/home/usr $
4. mkdir
只是可以切换目录还是不够完美。有时候你会想要新建一个文件夹或子文件夹。此时可以使用 mkdir 命令来完成操作。使用方法很简单,只需要把新的文件夹名跟在 mkdir 命令之后就好了。
~$ mkdir folderName
5. cp
拷贝-粘贴-and-paste是我们组织文件需要用到的重要命令。使用 cp命令可以帮助你在终端当中完成拷贝-粘贴操作。首先确定你想要拷贝的文件,然后键入打算粘贴此文件的目标位置。
$ cp src des
注意:如果目标目录对新建文件需要 root 权限时,你可以使用 sudo命令来完成文件拷贝操作。
6. rm
rm 命令可以帮助你移除文件甚至目录。如果不希望每删除一个文件都提示确认一次,可以用-f参数来强制执行。也可以使用-r参数来递归的移除文件夹。
$ rm myfile.txt
7. apt-get
这个命令会依据发行版的不同而有所区别。在基于 Debian 的发行版中,我们拥有 Advanced Packaging Tool(APT)包管理工具来安装、移除和升级包。apt-get 命令会帮助你安装需要在 Linux 系统中运行的软件。它是一个功能强大的命令行,可以用来帮助你对软件执行安装、升级和移除操作。
在其他发行版中,例如 Fedora、Centos,都各自不同的包管理工具。Fedora 之前使用的是 yum,不过现在 dnf 成了它默认的包管理工具。
$ sudo apt-get update
$ sudo dnf update
8. grep
当你需要查找一个文件,但是又忘记了它具体的位置和路径时,grep命令会帮助你解决这个难题。你可以提供文件的关键字,使用grep命令来查找到它。
$ grep user /etc/passwd
9. cat
作为一个用户,你应该会经常需要浏览脚本内的文本或者代码。cat命令是 Linux 系统的基本命令之一,它的用途就是将文件的内容展示给你。
$ cat CMakeLists.txt
10. poweroff
最后一个命令是 poweroff。有时你需要直接在终端中执行关机操作。此命令可以完成这个任务。由于关机操作需要 root 权限,所以别忘了在此命令之前添加sudo。
$ sudo poweroff
总结
如我在文章开始所言,这 10 条命令并不会让你立即成为一个 Linux 大拿,但它们会让你在初期快速上手 Linux。以这些命令为基础,给自己设置一个目标,每天学习一到三条命令,这就是此文的目的所在。
❷ CMake,configue出错,以下是错误信息。怎么弄 vs2010的。
CMake,configue出错,弹出框“Error in configuration process,project files may be invalid”是设置错误造成的,解决方法如下:
1、首先编写如下所示的main.cpp。
❸ 基本linux命令
基本linux命令有哪些呢?
1、ls命令
就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
常用参数搭配:
ls -a 列出目录所有文件,包含以.开始的隐藏文件
ls -A 列出除.及..的其它文件
ls -r 反序排列
ls -t 以文件修改时间排序
ls -S 以文件大小排序
ls -h 以易读大小显示
ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
实例:
(1) 按易读方式按时间反序排序,并显示文件详细信息
ls -lhrt
(2) 按大小反序显示文件详细信息
ls -lrS
(3)列出当前目录中所有以"t"开头的目录的详细内容
ls -l t*
(4) 列出文件绝对路径(不包含隐藏文件)
ls | sed "s:^:`pwd`/:"
(5) 列出文件绝对路径(包含隐藏文件)
find $pwd -maxdepth 1 | xargs ls -ld
2、cd 命令
cd(changeDirectory) 命令语法:
cd [目录名]
说明:切换当前目录至 dirName。
实例:
(1)进入要目录
cd /
(2)进入 "home" 目录
cd ~
(3)进入上一次工作路径
cd -
(4)把上个命令的参数作为cd参数使用。
cd !$
3、pwd 命令
pwd 命令用于查看当前工作目录路径。
实例:
(1)查看当前路径
pwd
(2)查看软链接的实际路径
pwd -P
4、mkdir 命令
mkdir 命令用于创建文件夹。
可用选项:
-m: 对新建目录设置存取权限,也可以用 chmod 命令设置;
-p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。
实例:
(1)当前工作目录下创建名为 t的文件夹
mkdir t
(2)在 tmp 目录下创建路径为 test/t1/t 的目录,若不存在,则创建:
mkdir -p /tmp/test/t1/t
5、rm 命令
删除一个目录中的一个或多个文件或目录,如果没有使用 -r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。
rm [选项] 文件…
实例:
(1)删除任何 .log 文件,删除前逐一询问确认:
rm -i *.log
(2)删除 test 子目录及子目录中所有档案删除,并且不用一一确认:
rm -rf test
(3)删除以 -f 开头的文件
rm -- -f*
6、rmdir 命令
从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限。
注意:不能删除非空目录
实例:
(1)当 parent 子目录被删除后使它也成为空目录的话,则顺便一并删除:
rmdir -p parent/child/child11
7、mv 命令
移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。
当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。
实例:
(1)将文件 test.log 重命名为 test1.txt
mv test.log test1.txt
(2)将文件 log1.txt,log2.txt,log3.txt 移动到根的 test3 目录中
mv llog1.txt log2.txt log3.txt /test3
(3)将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖
mv -i log1.txt log2.txt
(4)移动当前文件夹下的所有文件到上一级目录
mv * ../
8、cp 命令
将源文件复制至目标文件,或将多个源文件复制至目标目录。
注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在 shell 脚本中,如果不加 -i 参数,则不会提示,而是直接覆盖!
-i 提示
-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样
实例:
(1)复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖。
cp -ai a.txt test
(2)为 a.txt 建议一个链接(快捷方式)
cp -s a.txt link_a.txt
9、cat 命令
cat 主要有三大功能:
1.一次显示整个文件:
cat filename
2.从键盘创建一个文件:
cat > filename
只能创建新文件,不能编辑已有文件。
3.将几个文件合并为一个文件:
cat file1 file2 > file
-b 对非空输出行号
-n 输出所有行号
实例:
(1)把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
cat -n log2012.log log2013.log
(2)把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里
cat -b log2012.log log2013.log log.log
(3)使用 here doc 生成新文件
cat >log.txt <<EOF
>Hello
>World
>PWD=$(pwd)
>EOF
ls -l log.txt
cat log.txt
Hello
World
PWD=/opt/soft/test
(4)反向列示
tac log.txt
PWD=/opt/soft/test
World
Hello
10、more 命令
功能类似于 cat, more 会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。
命令参数:
+n 从笫 n 行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l 忽略Ctrl+l(换页)字符
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉
常用操作命令:
Enter 向下 n 行,需要定义。默认为 1 行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
实例:
(1)显示文件中从第3行起的内容
more +3 text.txt
(2)在所列出文件目录详细信息,借助管道使每次显示 5 行
ls -l | more -5
按空格显示下 5 行。
11、less 命令
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
常用命令参数:
-i 忽略搜索时的大小写
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-s 显示连续空行为一行
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
-x <数字> 将“tab”键显示为规定的数字空格
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
实例:
(1)ps 查看进程信息并通过 less 分页显示
ps -aux | less -N
(2)查看多个文件
less 1.log 2.log
可以使用 n 查看下一个,使用 p 查看前一个。
12、head 命令
head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。
常用参数:
-n<行数> 显示的行数(行数为复数表示从最后向前数)
实例:
(1)显示 1.log 文件中前 20 行
head 1.log -n 20
(2)显示 1.log 文件前 20 字节
head -c 20 log2014.log
(3)显示 t.log最后 10 行
head -n -10 t.log
13、tail 命令
用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
常用参数:
-f 循环读取(常用于查看递增的日志文件)
-n<行数> 显示行数(从后向前)
(1)循环读取逐渐增加的文件内容
ping 127.0.0.1 > ping.log &
后台运行:可使用 jobs -l 查看,也可使用 fg 将其移到前台运行。
tail -f ping.log
(查看日志)
14、which 命令
在 linux 要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:
which 查看可执行文件的位置。
whereis 查看文件的位置。
locate 配合数据库查看文件位置。
find 实际搜寻硬盘查询文件名称。
which 是在 PATH 就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
常用参数:
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
实例:
(1)查看 ls 命令是否存在,执行哪个
which ls
(2)查看 which
which which
(3)查看 cd
which cd(显示不存在,因为 cd 是内建命令,而 which 查找显示是 PATH 中的命令)
查看当前 PATH 配置:
echo $PATH
或使用 env 查看所有环境变量及对应值
15、whereis 命令
whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件。
常用参数:
-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
实例:
(1)查找 locate 程序相关文件
whereis locate
(2)查找 locate 的源码文件
whereis -s locate
(3)查找 lcoate 的帮助文件
whereis -m locate
❹ cmake安装mysql编译提示错误,错误提示如下,请大家指教,谢谢!
错误提示里说你的计算机上没有一个可用的Boost库或版本太低,MySQL需要不低于Boost 1.57.0的版本。您应该尝试下载一个Boost,并且完成编译。
您应该会得到上面图片中的大部分文件,除了几个我自己添加的辅助编译的脚本。
完成之后请再尝试重新编译MySQL。
附注:编译后生成的二进制库保存在Boost根目录下stagelib中,请根据MySQL的编译步骤中的指示填写在Makefile里面或者加入环境变量(具体的我不太清楚,需要您视具体情况而定)。
❺ 如何在linux下安装opencv
一、安装关联库
1
安装编译工具:
sudo apt-get install build-essential
编译程序有了这个软件,它才知道头文件和库函数在哪,最后才形成一个开发环境。
2
安装 cmake、git、pkg-config等辅助工具:
sudo apt-get install cmake git pkg-config libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev
3
安装关联库:
sudo
apt-get install python-dev python-opencv python-numpy libtbb2
libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev
libdc1394-22-dev
END
二、编译OpenCV
1
从网上下载OpenCV-3.0.0.zip。
下载地址:
http://opencv.org/downloads.html
2
如果使用虚拟机,最好将OpenCV-3.0.0.zip移动到用户主目录下进行编译,一定不能在虚拟机在Windows系统里的共享文件夹下进行编译,否则会因为文件系统(Windows7的文件系统是NTFS,ubuntu-15.10的文件系统是)不同在编译过程中出错。鄙人在共享文件夹下进行编译,编译进行到%15时报错,我修复后又在编译进行到%21时报错,反正是各种错误,我是没有能力继续修复了......
3
最好将OpenCV-3.0.0.zip移动到用户主目录下进行编译:
mv [OpenCV-3.0.0.zip存放路径] ~/opencv_3.0.0.zip
unzip opencv_3.0.0.zip
cd opencv-3.0.0
mkdir release
cd release
4
CMake是一个跨平台的编译工具,想深入学习cmake命令的可以网络一下。
编译命令:
cmake
-D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D
WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON
-D WITH_OPENGL=ON ..
5
make命令(-j表示用几个线程来编译,这样可以加快编译速度,不过这个与makefile的质量有关,有的工程用了-j会编译出错):
make -j $(nproc)
上述命令后一般大约要耗时1个小时,甚至更多,视个人电脑硬件配置而定。
执行完以后不要忘了make install:
sudo make install
6
如果编译过程出错后想要重新编译,把release目录下的CMakeCache.txt删除掉即可。
END
三、设置环境变量
1
添加库路径:
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
2
更新系统库:
sudo ldconfig
END
四、用cmake进行测试
1
DisplayImage.cpp中的源代码:
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv)
{
if ( argc != 2 )
{
printf("[usage]: %s <Image_Path>\n", argv[0]);
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data!\n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
2
CMakeLists.txt中的源代码:
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
3
编译命令:
cmake .
make
运行命令:
./DisplayImage 01.jpg
END
五、用make进行测试
opencv_test.cpp中的源代码:
#include "cv.h"
#include "highgui.h"
#include <iostream>
using namespace std;
#define PICTURE "./01.jpg"
int main(void)
{
IplImage* img = cvLoadImage(PICTURE, 0);
cvNamedWindow( "test", 0 );
cvShowImage("test", img);
cvWaitKey(0);
cvReleaseImage( &img );
cvDestroyWindow( "test" );
return 0;
}
Makefile中的源代码:
CXX = g++
CFLAGS = -Wall
LDFLAGS = `pkg-config --cflags --libs opencv`
SRCS = $(wildcard *.cpp)
TARGETS = $(patsubst %.cpp, %, $(SRCS))
all:$(TARGETS)
$(TARGETS):$(SRCS)
$(CXX) -o $@ $< $(LDFLAGS) $(CFLAGS)
clean:
-rm -rf $(TARGETS) *~ .*swp
.PHONY: clean all
编译命令:
make
运行命令:
./opencv_test
代码写得比较简单,所以显示效果是一张黑白图片。
❻ linux 编程
改为#include <sys/ioctl.h>就ok了。
❼ linux怎么安装java环境
安装系统环境是: centos6.5 64位
一.安装jdk
1.下载Java文件jdk-6u45-Linux-x64.bin
2.运行./jdk-6u45-linux-x64.bin
3.移动该文件到/usr/local/jdk目录下
mv jdk-6u45-linux-x64 /usr/local/jdk
4.配置java环境变量,在文件/etc/profile最后添加以下内容:
#set java
JAVA_HOME=/usr/local/jdk;export JAVA_HOME
JRE_HOME=/usr/local/jdk/jre;export JRE_HOME
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin;export PATH
export CLASSPATH=$CLASSPATH:$PATH:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:.
5.source /etc/profile (重新激活)
6.运行java -version查看是否成功
二.安装tomcat
1.下载tomcat文件:apache-tomcat-7.0.47.tar.gz
2.解压tar -zxvf apache-tomcat-7.0.47.tar.gz
3.移动该文件到/usr/local下,并命名为tomcat
mv apache-tomcat-7.0.47 /usr/local/tomcat
4.到tomcat/bin目录下setclasspath.sh文件中设置java环境,加入以下两行即可:
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=/usr/local/jdk/jre
5.设置tomcat 服务启动
把下面内容保存到/etc/init.d/目录,文件名为tomcat
#!/bin/bash
# /etc/rc.d/init.d/tomcat
# init script for tomcat precesses
#
# processname: tomcat by ton
# description: tomcat is a j2se server
# chkconfig: 2345 86 16
# description: Start up the Tomcat servlet engine.
set -m (有时不加这个,secureFX会话失效时,会导致tomcat自动stop)
CATALINA_HOME="/usr/local/tomcat"
if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
else
echo -e "/atomcat: unable to locate functions lib. Cannot continue."
exit -1
fi
# running tomcat services
RETVAL=$?
case "$1" in
start)
if [ -f $CATALINA_HOME/bin/startup.sh ];then
echo $"Starting Tomcat"
$CATALINA_HOME/bin/startup.sh
fi
;;
stop)
if [ -f $CATALINA_HOME/bin/shutdown.sh ];then
echo $"Stopping Tomcat"
$CATALINA_HOME/bin/shutdown.sh
fi
;;
restart)
if [ -f $CATALINA_HOME/bin/startup.sh ];then
echo $"Starting Tomcat"
$CATALINA_HOME/bin/startup.sh
fi
sleep 5
if [ -f $CATALINA_HOME/bin/shutdown.sh ];then
echo $"Stopping Tomcat"
$CATALINA_HOME/bin/shutdown.sh
fi
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
6.为该文件添加运行权限
chmod +x /etc/init.d/tomcat
三.安装MySQL
linux下主要是编译安装,需准备:cmake工具
1.yum install gcc gcc-c++ ncurses-devel perl (安装编译源码所需的工具和库)
2.下载cmake-3.0.1.tar.gz ,然后输入命令:
tar -xzvf cmake-3.0.1.tar.gz
cd cmake-3.0.1
./bootstrap ; make ; make install
3.新增mysql用户组和用户命令:
groupadd mysql
useradd -r -g mysql mysql
4.新建mysql安装目录和存放数据目录:
mkdir -p /usr/local/mysql
cd /usr/local/mysql
chown -R mysql:mysql . (分配权限)
mkdir -p /var/mysqldata
cd /var/mysqldata
chown -R mysql:mysql . (分配权限)
5.下载mysql-5.5.38.tar.gz ,解压:
tar -zxvf mysql-5.5.38.tar.gz
cd mysql-5.5.38(先进入目录下)
6.(先进入mysql-5.5.38目录下)再执行cmake命令:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/var/mysqldata/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/var/mysqldata \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306
7.再编译:
make
make install
8.复制配置文件,在/usr/local/mysql下执行:
cp support-files/my-medium.cnf /etc/my.cnf
9 初始化数据库
执行前需赋给scripts/mysql_install_db文件执行权限
chmod 755 scripts/mysql_install_db
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ \
--datadir=/var/mysqldata/
10. 设置mysqld的开机启动
cp support-files/mysql.server /etc/init.d/mysql
chmod 755 /etc/init.d/mysql
chkconfig mysql on
11.MySQL配置环境变量
export PATH=/usr/local/mysql/bin:$PATH
alias mysql_start="mysqld_safe &"
alias mysql_stop="mysqladmin –u root -p shutdown"
source /etc/profile (重启配置)
12.启动mysql服务
/etc/init.d/mysql start
ps -ef |grep mysql (命令查看是否启动)
13. 登陆mysql
# mysql -u root –p
14.修改MySQL用户root的密码
mysqladmin -u root password '123456' (更新密码)
❽ 如何在linux搭建完整的web服务器
可以参考如下Web服务器的建立过程。示例环境及web服务器软件:
Ubuntu 12.04
LAMP(Linux,Apache,Mysql,php)
1、安装Apache
(1)在安装HTTP Server之前需安装APR(Apache Portable Runtime)和APR-util安装APR
$ tar zxvf apr-1.4.6.tar.gz
$ cd apr-1.4.6/
$ ./configure
$ make
$ sudo make install
(2)安装APR-util
$ tar zxvf apr-util-1.4.1.tar.gz
$ cd apr-util-1.4.1
$ ./configure –with-apr=/usr/local/apr (whereis apr)
$ make
$ sudo make install
(3)安装httpd-2.4.2.tar.bz2默认安装位置/usr/local/apache2网页放在/usr/local/apache2/htdocs配置文件/usr/local/apache2/conf/httpd.conf
$ tar jxvf httpd-2.4.2.tar.bz2
$ cd httpd-2.4.2/
$ ./configure
$ make
$ sudo make install
(4)启动HTTP Server$ sudo /usr/local/apache2/bin/apachectl startAH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
(5)查看http是否正常运行$ netstat -a | grep httptcp 0 0 *:http *:* LISTEN
(6)在浏览器输入127.0.0.1如果正常应该显示“It works!”
2、安装MySQL
(1)、下载安装mysql-5.5.25.tar.gz,默认安装位置/usr/local/mysql/
$ tar zxvf mysql-5.5.25.tar.gz
$ cd mysql-5.5.25/
$ sudo groupadd mysql
$ sudo useradd -r -g mysql mysql
$ cmake .
$ make
$ sudo make install
$ cd /usr/local/mysql/
$ sudo chown -R mysql .
$ sudo chgrp -R mysql .
$ sudo scripts/mysql_install_db –user=mysql
$ sudo chown -R root .
$ sudo chown -R mysql data/
$ sudo cp support-files/my-medium.cnf /etc/my.cnf
$ sudo cp support-files/mysql.server /etc/init.d/mysql.server
(2)、启动MySQL:
方法1:$ sudo service mysql.server start
方法2:$ sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &
3、安装PHP
(1)安装下载php-5.4.4.tar.gz
$ tar zxvf php-5.4.4.tar.gz
$ cd php-5.4.4
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-mysqli --enable-mbstring --with-mcrypt(可能需要安装libmcrypt-dev )
$ sudo make install
$ sudo cp php.ini-development /usr/local/lib/php.ini
(2)配置HTTP Server使之支持PHPapache配置文件/usr/local/apache2/conf/httpd.conf修改或添加如下配置
<;IfMole dir_mole>
DirectoryIndex index.php
<;/IfMole>
<;FilesMatch \.php$>
SetHandler application/x-httpd-php
<;/FilesMatch>
(3)重启HTTP Server
$ sudo /usr/local/apache2/bin/apachectl restart
❾ Linux下编译安装软件的问题
绝对不说让楼主换系统!!
先得简要介绍一下linux系统的结构
linux的整个操作系统是由很多个小的软件包组成的,操作系统的功能由每个小的软件包分别完成。这些软件包有很多依赖关系,就是说,软件包A必须在装了软件包B的时候才能用。windows里也有这种情况,比如DirectX,VC运行库,.net framework等等,还有一个最简单的就是,一切windows应用程序都依赖于windows这个操作系统。linux不过是把对操作系统的依赖分给了若干个小的软件包。这种依赖有的时候是依赖于某个版本的,版本低了就不能用。有的时候各种软件之间还有兼容问题。在windows里,一般的应用软件不会有什么兼容问题,不行大不了删掉其中一个就可以了。但是操作系统内部的重要的东西有兼容问题,简单的删掉一个显然不行,就比较麻烦了。
本来,linux由这么多软件包构成,每个人单独下载安装这些软件包就可以了。其实确实也有人这么做,但是显然要比想象的麻烦,问题之一就是要解决各种兼容问题。各种linux发行版,比如redhat,他们就是为了简化用户的工作,把各种基本的软件包都提前设置好,解决各种兼容问题。升级某个核心的软件包的版本可能会破坏这种依赖关系,所以linux发行版才会过一段时间出一个大的版本,而不会一个一个的升级软件包。比如redhat8->redhat9一直到现在的rhel5和fedora10。
linux的升级速度很快,在多年以前的那些基础软件包构成的系统上,比如rh9,新的软件很可能无法安装运行了。当然,无法安装运行的原因是某一个或者多个依赖的软件包版本不够。解决的方法很明显,就是升级这些软件包,不过这些软件包又依赖于其他的软件包,还要继续升级。最后需要升级的软件包一共可能有成百上千个,只要一个一个的升级就可以了。每个发行版都有很多人搞这件事情,不过他们已经完成了修改代码等等工作,所以虽然可能比重装稍微麻烦点,一个人也不是绝对无法完成。慢慢干吧。
不过楼主的问题,明显是随便运行了几个不是程序的东西。
编译安装源码包的方法,一般是./configure;make;make install
根据那个文档里写的,看来是把./configure换成了cmake。不过要是不行的话,很可能是依赖问题。。慢慢升级吧。
❿ 如何写CMakeList.txt
这一章将从软件开发者的角度来描述如何实用CMake。也就是说,如果你的目标是用CMake来管理你的生成过程,请阅读这一章。
CMake的输入
COMMAND(args)
这里的 COMMAND 是命令行的名称,args是用空格分割的参数列表。典型的,对与每一个项目的目录存在一个CMakeLists.txt。 下面我们将从一个简单的Hello world例子开始介绍, 它的源代码树形文件包含这些文件:
Hello.c CMakeLists.txt
CMakeLists.txt将包含下面两行:
PROJECT(Hello)
ADD_EXECUTABLE(Hello Hello.c)
为了生成Hello的可执行程序,你只需依照上面CMake运行的过程描述来生成makefiles文件。 PROJECT 命令表明了产生的工作空间的名称。 ADD_EXECUTABLE命令添加可执行的目标到生成程序。这个简单的程序就只需要这些设置。如歌你的项目需要一些文件才能编译也很容易,只想修改ADD_EXECUTABLE命令行如下:
ADD_EXECUTABLE(Hello Hello.c File2.c File3.c File4.c)
ADD_EXECUTABLE只是很多CMake命令中的一种。比如更复杂的如下:
PROJECT(HELLO)
SET(HELLO_SRCS Hell.c File2.c File3.c)
IF(WIN32)
SET(HELLO_SRCS ${HELLO_SRCS} WinSupport.c)
ELSE (WIN32)
SET(HELLO_SRCS ${HELLO_SRCS} UnixSupport.c)
ENDIF (WIN32)
ADD_EXECUTABLE (Hello ${HELLO_SRCS})
#look for the Tcl library
FIND_LIBRARY(TCL_LIBRARY NAMES tcl tc184 tc183 tc 182 tc 180
PATHS /usr/lib /usr/local/lib)
IF (TCL_LIBRARY)
TARGET_ADD_LIBRARY (Hello TCL_LIBRARY)
ENDIF(TCL_LIBRARY)
在这个例子中 SET 命令用于将源文件组成一个列表。 IF 命令用于增加WinSupport.c或者UnixSupport.c到列表中。 最后 ADD_EXECUTABLE 命令用于 采用源文件列表HELLO_SRCS中列出的文件 生成可执行文件。FIND_LIBRARY命令用于寻找在一些指定目录下的特定的Tcl库文件。如果找到了,就将他们添加到Hello可执行程序的链接命令。 #行为注释行。
CMake 是会定义一些使用的变量在CMakeList文件中。 比如,WIN32总是会在windows系统中被定义,而UNIX
总是在UNIX系统中被定义。
生成目标:(Build Targets)
SET()
SUBDIRS()
ADD_LIBRARY()
这里生成静态链接文件,例如ADD_LIBRARY(Whole ${HELLO_SRC}),就会生成一个libWhole.a可供链接
ADD_EXECUTABLE()
AUX_SOURCE_DIRECTORY()
PROJECT()
CMake会循环的查找从当前目录到SUBDIRS列出的任何子目录的文件。SET命令用于设定一个变量。ADD_LIBRARY将添加一个库到目标之中。 ADD_EXECUTABLE添加一个可执行程序到目标列表中。(Note:编译器执行的顺序是先编译源文件,然后生成库文件,最后生成可执行文件)。AUX_SOURCE_DIRECTORY表示一个不在当前目录的包含源文件的目录。这些源代码将插入当前的库(LIBRARY)中。所有在AUX_SOURCE_DIRECTORY的文件将被编译(如,*.c,*.cxx,*.cpp等等)。PROJECT(ProjectName)是一个用在MSVC中的特殊变量,用于为编译器生成项目。他也为CMAKE定义连个有用的变量:ProjectName_SOURCE_DIR和ProjectName_BINARY_DIR.
编译的标示和选项。除了上面列出的命令外,CMakeLists.txt还包含如下的命令:
INCLUDE_DIRECTORIES()
LINK_DIRECTORIES()
LINK_LIBRARIES()
TARGET_LINK_LIBRARIES()
这些命令定义了用于编译源代码和生成可执行程序的目录和库。上面列出的目录的一个很重要的特性是它们会被任何子目录继承。也就是说,CMake依照目录的分层结构来承袭这些命令。在每次遇到对这些命令的描述的时候都会被展开一次。比如说,如果在顶层的CMakeLists文件中有定义INCLUDE_DIRECTORIES(/usr/include)和SUBDIRS(./subdir1),并且在./subdir1/CMakeLists.txt有INCLUDE_DIRECTORIES(/tmp/foobar),于是最后网状的结果是
INCLUDE_DIRECTORIES(/usr/include /tmp/foobar)
CMake会定义许多的模块来查找通常会用到的包,比如OpenGL或Java。 这些模块为你节省了很多的时间来编写这些查找包。这些模块可以像这样加到你的CMakeList文件中,如下:
INCLUDE(${CMAKE_ROOT}/Moles/FindTCL.cmake)
CMAKE_ROOT 总是定义在CMake中,用于指向CMake安装的路径。查看Moles子目录下的一些文件可以给你提供一些很好的idea关于怎样用这些CMake命令。
给项目文件添加一个新的目录
一个通用的方法来扩展一个项目文件是给他添加一个新的文件夹。这将包含三个步骤:
1.创建一个新的目录在你的源代码的分层目录中
2.将这个新的目录添加到SUBDIRS命令中
3.在这个新创建的目录中用适当的命令建立一个CMakeLists.txt文件
This section describes how to use CMake from the software developer's point of view. That is, if your aim is to use CMake to manage your build process, read this section first.
Input to CMake
COMMAND(args)
Where COMMAND is the name of the command, and args is a white-space separated list of arguments to the command. (Arguments with embedded white-space should be quoted.) Typically there will be a CMakeLists.txt file for each directory of the project. Let's start with a simple example. Consider building hello world. You would have a source tree with the following files:
Hello.c CMakeLists.txt
The CMakeLists.txt file would contain two lines:
PROJECT (Hello)
ADD_EXECUTABLE(Hello Hello.c)
To build the Hello executable you just follow the process described in Running CMake above to generate the makefiles or Microsoft project files. The PROJECT command indicates what the name of the resulting workspace should be and the ADD_EXECUTABLE command adds an executable target to the build process. That's all there is to it for this simple example. If your project requires a few files it is also quite easy, just modify the ADD_EXECUTABLE line as shown below.
ADD_EXECUTABLE(Hello Hello.c File2.c File3.c File4.c)
ADD_EXECUTABLE is just one of many commands available in CMake. Consider the more complicated example below.
PROJECT (HELLO)
SET(HELLO_SRCS Hello.c File2.c File3.c)
IF (WIN32)
SET(HELLO_SRCS ${HELLO_SRCS} WinSupport.c)
ELSE (WIN32)
SET(HELLO_SRCS ${HELLO_SRCS} UnixSupport.c)
ENDIF (WIN32)
ADD_EXECUTABLE (Hello ${HELLO_SRCS})
# look for the Tcl library
FIND_LIBRARY(TCL_LIBRARY NAMES tcl tcl84 tcl83 tcl82 tcl80
PATHS /usr/lib /usr/local/lib)
IF (TCL_LIBRARY)
TARGET_ADD_LIBRARY (Hello TCL_LIBRARY)
ENDIF (TCL_LIBRARY)
In this example the SET command is used to group together source files into a list. The IF command is used to add either WinSupport.c or UnixSupport.c to this list. And finally the ADD_EXECUTABLE command is used to build the executable with the files listed in the source list HELLO_SRCS. The FIND_LIBRARY command looks for the Tcl library under a few different names and in a few different paths, and if it is found adds it to the link line for the Hello executable target. Note the use of the # character to denote a comment line.
CMake always defines some variables for use within CMakeList files. For example, WIN32 is always defined on windows systems and UNIX is always defined for UNIX systems. CMake defines a number of commands. A brief summary of the most commonly used commands follows here. Later in the document an exhaustive list of all pre-defined commands is presented. (You may also add your own commands, see the Extension Guide for more information.)
Build Targets:
SET()
SUBDIRS()
ADD_LIBRARY()
这里生成静态链接文件,例如ADD_LIBRARY(Whole ${HELLO_SRC}),就会生成一个libWhole.a,可供链接。
ADD_EXECUTABLE()
AUX_SOURCE_DIRECTORY()
PROJECT()
CMake works recursively, descending from the current directory into any subdirectories listed in the SUBDIRS command. The command SET is used for setting a variable, in this case to a list of source files. (Note: currently only C and C++ code can be compiled.) ADD_LIBRARY adds a library to the list of targets this makefile will proce. ADD_EXECUTABLE adds an executable to the list of targets this makefile will proce. (Note: source code is compiled first, then libraries are built, and then executables are created.) The AUX_SOURCE_DIRECTORY is a directory where other source code, not in this directory, whose object code is to be inserted into the current LIBRARY. All source files in the AUX_SOURCE_DIRECTORY are compiled (e.g. *.c, *.cxx, *.cpp, etc.). PROJECT (PojectName) is a special variable used in the MSVC to create the project for the compiler, it also defines two useful variables for CMAKE: ProjectName_SOURCE_DIR and ProjectName_BINARY_DIR.
Build flags and options. In addition to the commands listed above, CMakeLists.txt often contain the following commands:
INCLUDE_DIRECTORIES()
LINK_DIRECTORIES()
LINK_LIBRARIES()
TARGET_LINK_LIBRARIES()
These commands define directories and libraries used to compile source code and build executables. An important feature of the commands listed above is that are inherited by any subdirectories. That is, as CMake descends through a directory hierarchy (defined by SUBDIRS()) these commands are expanded each time a definition for a command is encountered. For example, if in the top-level CMakeLists file has INCLUDE_DIRECTORIES(/usr/include), with SUBDIRS(./subdir1), and the file ./subdir1/CMakeLists.txt has INCLUDE_DIRECTORIES(/tmp/foobar), then the net result is
INCLUDE_DIRECTORIES(/usr/include /tmp/foobar)
CMake comes with a number of moles that look for commonly used packages such as OpenGL or Java. These moles save you from having to write all the CMake code to find these packages yourself. Moles can be used by including them into your CMakeList file as shown below.
INCLUDE (${CMAKE_ROOT}/Moles/FindTCL.cmake)
CMAKE_ROOT is always defined in CMake and can be used to point to where CMake was installed. Looking through some of the files in the Moles subdirectory can provide good ideas on how to use some of the CMake commands.
Adding A New Directory to a project
A common way to extend a project is to add a new directory. This involves three steps:
Create the new directory somewhere in your source directory hierarchy.
Add the new directory to the SUBDIRS command in the parent directories CMakeLists.txt
Create a CMakeLists.txt in the new directory with the appropriate commands