一、确认环境正确安装
首先确认Mysql数据库已安装
第一篇里讲到,killall mysqld 并且重新service mysqld start 之后,可以正常 starting MYSQL [ok] 但是还有问题依旧没有解决:不能通过mysql .sock连接MySQL问题 ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2) 解决 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)的方法 期间出现bash: mysqld_safe: command not found 解决方法
总结上面的解决方法:(有可能是mysql的初始密码问题)
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
/etc/init.d/mysqld stop
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
ln -s /usr/local/mysql/bin/mysqld_safe /usr/bin
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
mysql -u root mysql
SET SQL_SAFE_UPDATES = 0;
mysql> UPDATE user SET authentication_string=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit;
/etc/init.d/mysqld restart
mysql -uroot -p
Enter password: <输入新设的密码newpassword>
————————————————
以上需要特别注意的地方是,mysql默认结束标志是分号;输入完一条sql命令后加上分号回车才执行
解决完问题后,确认已正确安装MySQL数据库
然后修改main.cpp数据库中的初始信息 //需要修改的数据库信息,登录名,密码,库名
string user = "root";
string passwd = "root";
string databasename = "mydb";
(vim插入模式i ,退出插入模式ESC或者ctrl+[ )
二、项目位置的确认和运行
TinyWebServer被我放到了/home/admin/.ssh下,执行sh ./build.sh
问题一:
和第一篇里一样的错误。linux下解决make: g++: Command not found 原因是缺少组件导致的,执行yum search "gcc-c++" 查询缺少组件的版本,不同的操作系统版本可能会不一样,切换到root用户,执行yum install "gcc-c++.x86_64" -y 安装对应版本的组件。
问题二:
g++ -o server main.cpp timer/lst_timer.cpp http/http_conn.cpp log/log.cpp CGImysql/sql_connection_pool.cpp webserver.cpp config.cpp -g -lpthread -lmysqlclient
In file included from ./threadpool/threadpool.h:9:0,
from webserver.h:15,
from config.h:4,
from main.cpp:1:
./threadpool/../CGImysql/sql_connection_pool.h:6:25: fatal error: mysql/mysql.h: No such file or directory
#include <mysql/mysql.h>
^
compilation terminated.
make: *** [server] Error 1
是因为没有安装mysql的相关链接库,yum install mysql-devel
问题三:
g++ -o server main.cpp timer/lst_timer.cpp http/http_conn.cpp log/log.cpp CGImysql/sql_connection_pool.cpp webserver.cpp config.cpp -g -lpthread -lmysqlclient
/bin/ld: cannot find -lmysqlclient
collect2: error: ld returned 1 exit status
make: *** [server] Error 1
就是在系统中找不到libmysqlclient.so文件
解决/usr/bin/ld: cannot find -l**** 问题的解决办法 中间出现-bash: locate: command not found
/usr/bin/ld: cannot find -lxxx 的解决办法 添加动态链接库的搜索路径
首先locate mysqlclient ,可以看到其实存在libmysqlclient.so,但是、/bin/ld找不到,所以 1.使用 /etc/ld.so.conf 配置文件将库文件所在路径添加到gcc的搜索路径,错误依旧
sudo echo ‘/usr/local/mysql/lib/’ >> /etc/ld.so.conf #这步通过vim /etc/ld.so.conf,可以看到添加成功 sudo ldconfig #运行该命令,重新载入 /ext/ld.so.conf 中的路径,使修改生效。 gcc -lmysqlclient --verbose #查询库文件libmysqlclient.so 是否能在搜索路径中找到。
2. ln -s建立软连接,错误依旧
ln -s /usr/bin/ld /usr/local/mysql/lib
3.修改环境变量,成功
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/' >> ~/.bashrc
source ~/.bashrc
export LIBRARY_PATH=/usr/local/mysql/lib/:$LIBRARY_PATH
echo 'export LIBRARY_PATH=/usr/local/mysql/lib/:$LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
目前执行sh ./build.sh 然后可以正常启动./server
|