Linux系统远程操作和程序编译

发布于:2025-06-20 ⋅ 阅读:(21) ⋅ 点赞:(0)

一、远程登陆

1.Ubuntu网络配置

更改为桥接模式
![[Pasted image 20250619191402.png]]

终端中使用ifconfig指令
修改Ubuntu网络配置文件:sudo nano /etc/network/interfaces
添加:
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet static
address 192.168.43.109
netmask 255.255.255.0
gateway 192.168.43.1
指令:sudo nano /etc/resolv.conf
添加:
nameserver 192.168.43.1
![[Pasted image 20250619191825.png]]

2.创建用户

代码:
sudo useradd -m user -s /bin/bash
sudo passwd user
sudo adduser user sudo
sudo nano /etc/sudoers

3.ssh安装

代码:
sudo apt install ssh
ps -e | grep ssh

4.putty远程登陆

![[Pasted image 20250619192218.png]]

5.树莓派创建新用户

代码
sudo useradd -m -s /bin/bash user
passwd user
sudo nano /etc/sudoers

6.树莓派上开启ftp服务

下载vsftpd:
sudo apt-get install vsftpd
修改配置文件:
cd /etc/
sudo gedit vsftpd.conf
write enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
重启服务:
sudo service vsftpd restart

7.Windows使用ftp进行操作

在终端中连接树莓派指令:ftp +树莓派ip
上传文件:
lcd (主机路径)
cd (树莓派目录)
put (文件路径)
下载:
get (文件名)

8.VNC

ubuntu安装VNC server:apt-cache search vncserver
![[Pasted image 20250619193459.png]]

安装:sudo apt-get install vnc4server
![[Pasted image 20250619193639.png]]

报错解决:sudo apt-get update
![[Pasted image 20250619193721.png]]

配置VNCserver:sudo nano /home/lyy/.vnc/xstartup
![[Pasted image 20250619194011.png]]

Windows VNC viewer安装登陆
![[Pasted image 20250619194217.png]]

![[Pasted image 20250619194252.png]]

二、talk程序

代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

#define BUFFER_SIZE 1024

int main() {
int parent_to_child[2]; // 父进程写,子进程读
int child_to_parent[2]; // 子进程写,父进程读
pid_t pid;
char buffer[BUFFER_SIZE];

// 创建两个管道
if (pipe(parent_to_child) == -1 || pipe(child_to_parent) == -1) {
    perror("pipe");
    exit(EXIT_FAILURE);
}

// 创建子进程
pid = fork();
if (pid == -1) {
    perror("fork");
    exit(EXIT_FAILURE);
}

if (pid > 0) {  // 父进程
    close(parent_to_child[0]);  // 关闭父进程不用的读端
    close(child_to_parent[1]);  // 关闭父进程不用的写端
    
    printf("父进程(进程ID: %d)已启动,输入'exit'退出\n", getpid());
    
    while (1) {
        // 父进程发送消息
        printf("父进程> ");
        fgets(buffer, BUFFER_SIZE, stdin);
        buffer[strcspn(buffer, "\n")] = '\0';  // 去掉换行符
        
        if (strcmp(buffer, "exit") == 0) {
            write(parent_to_child[1], buffer, strlen(buffer) + 1);
            break;
        }
        
        write(parent_to_child[1], buffer, strlen(buffer) + 1);
        
        // 父进程接收消息
        int nbytes = read(child_to_parent[0], buffer, BUFFER_SIZE);
        if (nbytes <= 0) {
            break;
        }
        printf("子进程说: %s\n", buffer);
        
        if (strcmp(buffer, "exit") == 0) {
            break;
        }
    }
    
    close(parent_to_child[1]);
    close(child_to_parent[0]);
    wait(NULL);  // 等待子进程结束
    printf("父进程退出\n");
} else {  // 子进程
    close(parent_to_child[1]);  // 关闭子进程不用的写端
    close(child_to_parent[0]);  // 关闭子进程不用的读端
    
    printf("子进程(进程ID: %d)已启动,输入'exit'退出\n", getpid());
    
    while (1) {
        // 子进程接收消息
        int nbytes = read(parent_to_child[0], buffer, BUFFER_SIZE);
        if (nbytes <= 0) {
            break;
        }
        printf("父进程说: %s\n", buffer);
        
        if (strcmp(buffer, "exit") == 0) {
            break;
        }
        
        // 子进程发送消息
        printf("子进程> ");
        fgets(buffer, BUFFER_SIZE, stdin);
        buffer[strcspn(buffer, "\n")] = '\0';  // 去掉换行符
        
        if (strcmp(buffer, "exit") == 0) {
            write(child_to_parent[1], buffer, strlen(buffer) + 1);
            break;
        }
        
        write(child_to_parent[1], buffer, strlen(buffer) + 1);
    }
    
    close(parent_to_child[0]);
    close(child_to_parent[1]);
    printf("子进程退出\n");
    exit(EXIT_SUCCESS);
}

return 0;

}
结果:
![[Pasted image 20250619195211.png]]

三、OpenCV

1.安装OpenCV

unzip opencv-4.11.0.zip
cd opencv-4.11.0
sudo su
sudo apt-get update
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev
![[Pasted image 20250619200947.png]]

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local …
sudo make
sudo make install

![[Pasted image 20250619201340.png]]

![[Pasted image 20250619201403.png]]

配置环境:
sudo gedit /etc/ld.so.conf.d/opencv.conf
sudo ldconfig
sudo gedit /etc/bash.bashrc
![[Pasted image 20250619201728.png]]

source /etc/bash.bashrc

2.text1.cpp

#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
CvPoint center;
double scale = -3;
IplImage* image = cvLoadImage(“lena.jpg”);
argc == 2? cvLoadImage(argv[1]) : 0;

cvShowImage(“Image”, image);

if (!image) return -1; center = cvPoint(image->width / 2, image->height / 2);
for (int i = 0;iheight;i++)
for (int j = 0;jwidth;j++) {
double dx = (double)(j - center.x) / center.x;
double dy = (double)(i - center.y) / center.y;
double weight = exp((dxdx + dydy)scale);
uchar
ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3);
ptr[0] = cvRound(ptr[0] * weight);
ptr[1] = cvRound(ptr[1] * weight);
ptr[2] = cvRound(ptr[2] * weight);
}

Mat src;Mat dst;
src = cvarrToMat(image);
cv::imwrite(“test.png”, src);

cvNamedWindow(“test”,1); imshow(“test”, src);
cvWaitKey();
return 0;
}

编译命令:gcc test1.cpp -o test1 pkg-config --cflags --libs opencv
pkg-config是一个帮助查询已安装库信息的工具。
–cflags获取编译时需要的标志,包括头文件路径和其他编译选项。
–libs获取链接时需要的标志,包括:库文件路径
当执行该命令时:系统会查找OpenCV的.pc配置文件并从配置文件中读取头文件路径、库文件路径和依赖关系,再输出完整的编译和链接选项

Makefile:
CXX := g++
CXXFLAGS := -std=c++11 -Wall
OPENCV := $(shell pkg-config --cflags --libs opencv4 2>/dev/null || pkg-config --cflags --libs opencv)

SRC_DIR := src
BUILD_DIR := build
TARGET := $(BUILD_DIR)/test1
SRCS := $(wildcard $(SRC_DIR)/*.cpp)
OBJS := $(patsubst ( S R C D I R ) / (SRC_DIR)/%.cpp, (SRCDIR)/(BUILD_DIR)/%.o,$(SRCS))

all: $(BUILD_DIR) $(TARGET)
$(TARGET): $(OBJS)
$(CXX) $(CXXFLAGS) $^ -o $@ $(OPENCV)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
clean:
rm -rf $(BUILD_DIR)
run: ( T A R G E T ) . / (TARGET) ./ (TARGET)./(TARGET) your_image.jpg
.PHONY: all clean run

CMake:
cmake_minimum_required(VERSION 3.5)
project(OpenCV_Test CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(OpenCV REQUIRED)
message(STATUS “OpenCV library status:”)
message(STATUS " version: ${OpenCV_VERSION}“)
message(STATUS " libraries: ${OpenCV_LIBS}”)
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")
add_executable(test1 src/test1.cpp)
target_link_libraries(test1 ${OpenCV_LIBS})
install(TARGETS test1 DESTINATION bin)


网站公告

今日签到

点亮在社区的每一天
去签到