Linux操作系统下复现github上的项目(二):项目的正常运行

一、确认环境正确安装

首先确认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 
#出现的问题是不能通过 ‘/tmp/mysql .sock’连到服务器,一些mysql 安装方法 将 mysql .sock放在/var/lib/mysql.sock下,所以两者所以软连接一下

/etc/init.d/mysqld stop ##1.停止mysql数据库

mysqld_safe --user=mysql --skip-grant-tables --skip-networking & #忘记密码时跳过授权表启动

ln -s /usr/local/mysql/bin/mysqld_safe /usr/bin 
#由于出现报错bash: mysqld_safe: command not found,查看了一下mysqld_safe在/usr/local/mysql/bin/mysqld_safe下,但是系统默认会查找/usr/bin下的命令,所以两者软连接一下。

mysqld_safe --user=mysql --skip-grant-tables --skip-networking & #再重新尝试忘记密码时跳过授权表启动
mysql -u root mysql#无密码登录数据库

#mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';#更新root密码
#报错ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
#最新版MySQL请采用如下SQL:
#mysql> UPDATE user SET authentication_string=PASSWORD('newpassword') where USER='root';
#报错ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column,理由是mysql在safe-updates模式中,如果你where后跟的条件不是主键id,那么就会出现这种错误。
SET SQL_SAFE_UPDATES = 0;#执行该命令更改mysql数据库模式
mysql> UPDATE user SET authentication_string=PASSWORD('newpassword') where USER='root';

mysql> FLUSH PRIVILEGES;#刷新权限 

mysql> quit;#退出mysql

/etc/init.d/mysqld restart#重启mysql

#8.使用root用户重新登录mysql
mysql -uroot -p 
Enter password: <输入新设的密码newpassword>
————————————————
以上需要特别注意的地方是,mysql默认结束标志是分号;输入完一条sql命令后加上分号回车才执行

解决完问题后,确认已正确安装MySQL数据库
在这里插入图片描述

然后修改main.cpp数据库中的初始信息
//需要修改的数据库信息,登录名,密码,库名

string user = "root";
string passwd = "root";
string databasename = "mydb";

(vim插入模式i ,退出插入模式ESC或者ctrl+[ )

二、总结mysql库的快速登入

  1. service mysqld start (看能否正确开启)
  2. killall mysqld
  3. /etc/init.d/mysqld restart (重启)
  4. mysql -uroot -p (登入)

三、项目位置的确认和运行

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/
#修改环境变量 LD_LIBRARY_PATH,加入库文件所在路径。使用 export 命令使修改生效。 
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/' >> ~/.bashrc
#将上述 export 命令加入到配置文件 ~/.bashrc 
source ~/.bashrc #使之永久生效。

#若以上尝试修改变量 LD_LIBRARY_PATH 不奏效,则修改变量 LIBRARY_PATH  
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

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在复现GitHub上的Python项目之前,你需要先进行一些准备工作。首先,你需要检查项目所需的环境和版本。你可以查看项目中的misc.xml文件,其中包含了项目的版本和环境信息。例如,在PyCharm的Python项目中,你可以在misc.xml文件中找到项目的版本和Python解释器的路径。\[1\] 接下来,你需要安装Anaconda和PyCharm。在安装Anaconda时,你可以选择安装路径,并确保选择了所有的选项。同样,在安装PyCharm时,你也可以选择安装路径,并选择所有的选项。\[2\] 然后,你需要创建一个虚拟环境,并安装项目所需的Python版本。你可以打开Anaconda prompt,使用指定的Python版本创建一个虚拟环境。\[2\] 接下来,你需要安装PyTorch和CUDA。你可以访问PyTorch官网,找到适合你项目版本的PyTorch,并在Anaconda prompt中使用安装命令来安装PyTorch、CUDA和其他必要的包。然后,你可以在PyCharm中将新创建的虚拟环境设置为Python解释器,并检查已安装的模块。\[4\] 最后,你需要安装项目所需的其他模块。你可以使用PyCharm自带的功能一键安装所需的模块,或者在Anaconda prompt中激活虚拟环境,并使用"pip install"命令来安装模块。\[5\] 完成上述步骤后,你可以打开PyCharm,打开项目文件夹,并将创建的虚拟环境设置为Python解释器。然后,在终端中输入相应的命令来运行代码,具体的命令可以在项目GitHub页面或者项目的markdown文件中找到。\[6\] 希望这些步骤能帮助你成功复现GitHub上的Python项目! #### 引用[.reference_title] - *1* [github项目复现注意事项](https://blog.csdn.net/qq_41517071/article/details/123959356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [深度学习Github项目实例复现:从虚拟环境安装到得出代码的复现结果](https://blog.csdn.net/LFY437726093/article/details/130010448)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值