RISC-V平台编译 state-thread x264 ffmpeg zlog

news/2025/2/22 1:08:17/

1.state-threads

源码下来之后 

直接 make linux-debug

目录下生成了对应的.a 和 .h文件 

gcc test.c -o test -l st -L .
 

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <errno.h>  
#include <sys/socket.h>  
#include <netinet/in.h>  
#include <st.h>  #define BACKLOG 5  
#define IOBUFSIZE 8192
#define PORT 7474  static void *handle_request(void *arg)
{st_netfd_t cli_nfd = (st_netfd_t) arg;struct pollfd pd;pd.fd = st_netfd_fileno(cli_nfd);pd.events = POLLIN;char buf[IOBUFSIZE];int nw, nr;for ( ; ; ) {/*pd.revents = 0;if (st_poll(&pd, 1, ST_UTIME_NO_TIMEOUT) <= 0) {printf("st_poll<=0\n");break;}*///if (pd.revents & POLLIN) {			nr = (int) st_read(cli_nfd, buf, IOBUFSIZE, ST_UTIME_NO_TIMEOUT);if (nr <= 0)break;printf("[recv][%d] %s\n",nr,buf);     nw = st_write(cli_nfd, buf, nr, ST_UTIME_NO_TIMEOUT);printf("[write] %d\n",nw);if (nw == nr)break;			//}} 
done:st_netfd_close(cli_nfd);return NULL;
} int main() {  int sock, client_fd;  struct sockaddr_in address;struct sockaddr_in cli_addr;socklen_t addrlen = sizeof(address);  st_netfd_t cli_nfd, srv_nfd;int n =0;// 初始化StateThreads库  if (st_init() != 0) {  perror("st_init");  return 0;  }  if ((sock = socket(PF_INET, SOCK_STREAM, 0)) < 0) {printf("socket");exit(1);}n = 1;if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&n, sizeof(n)) < 0) {printf("setsockopt");exit(1);}// 绑定socket到端口  address.sin_family = AF_INET;  address.sin_addr.s_addr = INADDR_ANY;  address.sin_port = htons(PORT);  if (bind(sock, (struct sockaddr *)&address, sizeof(address)) < 0) {printf("bind");exit(1);}listen(sock, 128);if ((srv_nfd = st_netfd_open_socket(sock)) == NULL) {printf("st_netfd_open");exit(1);}printf("tcp srv start\n");for ( ; ; ) {n = sizeof(cli_addr);cli_nfd = st_accept(srv_nfd, (struct sockaddr *)&cli_addr, &n,ST_UTIME_NO_TIMEOUT);if (cli_nfd == NULL) {printf("st_accept\n");continue;}if (st_thread_create(handle_request, cli_nfd, 0, 0) == NULL) {printf("st_thread_create\n");continue;}}	close(sock); st_netfd_close(srv_nfd);return 0;  
}  

用网络助手测试下正常

2.x264  

默认的官网的不支持risc-v平台  去下面链接下载支持此架构的

Jiayan Qian / x264-riscv-dev · GitLab (videolan.org)






 

./configure \
        --prefix=./ubuntu \
        --enable-static \
        --enable-shared \

 

如上图所示生成了对应的.a文件 和头文件

3.ffmpeg

 

执行 脚本 

 

打了一大串信息 

 


http://www.ppmy.cn/news/1573754.html

相关文章

一文读懂Docker之Docker Compose

目录 一、Docker Compose简介 二、Docker Compose的安装和基本使用 1、Docker Compose的安装 步骤一、下载docker-compose 步骤二、新增可执行权限 步骤三、查看是否安装成功 2、Docker Compose的基本使用 (1)、docker-compose up (2)、docker-compose ps (3)、docke…

C++ 游戏开发:从零到英雄的进阶之旅

在当今数字化时代&#xff0c;游戏开发已然成为极具吸引力与挑战性的领域。C 作为游戏开发中极为常用的语言之一&#xff0c;凭借其高性能和强大功能&#xff0c;长久以来都是游戏开发者的心头好。若你对游戏开发满怀热忱&#xff0c;却不知如何起步&#xff0c;这篇博客就将为…

科技快讯 | DeepSeek推出NSA加速长上下文训练,xAI Grok系列将陆续开源,月之暗面发布Kimi Latest新模型

阶跃星辰首次开源Step系列多模态大模型 2月18日&#xff0c;财联社消息&#xff0c;阶跃星辰与吉利汽车集团宣布&#xff0c;双方合作开发的阶跃Step系列多模态大模型向全球开发者开源。包括参数量达300亿的Step-Video-T2V视频生成模型和行业内首款产品级开源语音交互大模型Ste…

Brave132编译指南 MacOS篇 - 构筑开发环境(二)

1. 引言 上一篇文章中&#xff0c;我们对Brave浏览器进行了初步的介绍&#xff0c;包括它的核心特性和技术架构。本篇将重点关注如何在MacOS系统上搭建Brave编译所需的开发环境。对于任何想要在Mac平台上编译Brave源代码的开发者来说&#xff0c;正确的环境配置是成功的基石。…

SLT-加载表添加字段重新刷数

1、LTRC数据提供->输入表名->停止加载/复制 2、LTRS添加表字段&#xff08;只有在加载部分字段的情况下&#xff09;&#xff1b; 在查看修改概览页将需要的字段选中并删除&#xff0c;删除的字段自动归集到已修改概览里。 3、数据提供-》输入表名-》创建/数据库视图&am…

更强大、更灵活! defineModel 重新定义双向绑定

前言 在 Vue 3.4 中&#xff0c; defineModel 宏的引入标志着 Vue 双向绑定机制的一次重大革新。作为 Composition API的重要补充&#xff0c; defineModel 不仅简化了代码结构&#xff0c;还显著提升了开发效率和代码可维护性。本文将深入探讨 defineModel 的核心原理、最佳…

notepad++右键菜单不见了

卸载时没点击完成&#xff0c;又重新安装了一个&#xff0c;最终导致了一些bug&#xff0c;导致右键没有notepad菜单。 解决方式&#xff1a; 新建一个register.reg文件&#xff0c;加入以下代码&#xff0c;然后双击执行即可 代码说明&#xff1a;Open with Notepad 是右…

从零到一实现微信小程序计划时钟:完整教程

在本教程中&#xff0c;我们将一起实现一个微信小程序——计划时钟。这个小程序的核心功能是帮助用户添加任务、设置任务的时间范围&#xff0c;并且能够删除和查看已添加的任务。通过以下步骤&#xff0c;我们将带你从零开始实现一个具有基本功能的微信小程序计划时钟。 项目…