Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

problem #297

Closed
ChengYe9527 opened this issue Mar 30, 2023 · 29 comments
Closed

problem #297

ChengYe9527 opened this issue Mar 30, 2023 · 29 comments

Comments

@ChengYe9527
Copy link

i try to use srpc/tools/srpc to make http,but it not work
截屏2023-03-30 14 44 56

@ChengYe9527
Copy link
Author

我应该怎么使用呢

@holmes1412
Copy link
Contributor

holmes1412 commented Mar 30, 2023

你好,我执行这个命令是没有问题的。猜测是getopt这个函数在不同系统里的返回值不一样,导致非参数的解析也进入了default分支。

麻烦确认下是否使用最新的代码,另外可以告知一下具体的系统等信息吗?

@ChengYe9527
Copy link
Author

是在docker下,ubuntu20.04
从github的srpc页面下载
git clone --recursive https://github.com/sogou/srpc.git
cd srpc
make
也装了protobuf3.6.1的版本,编译没有报错了

@ChengYe9527
Copy link
Author

是有特定的安装路径吗?

@holmes1412
Copy link
Contributor

和安装路径没有关系,这个小工具只是做简单的参数解析,还不涉及pb呢。我们也没遇到过这个问题,目前只能是怀疑getopt这个返回值在不同平台下有点不一样,需要等我找到类似的系统复现出来才能确定。

@ChengYe9527
Copy link
Author

tools里面的工具有涉及到protobuf吗?
单tools里面的文档我在ubuntu20.04系统里也是上面的问题

@holmes1412
Copy link
Contributor

不涉及protobuf~

@holmes1412
Copy link
Contributor

holmes1412 commented Mar 30, 2023

需要等我晚点找个环境复现一下。
你可以先把tools/srpc_basic_controller.cc的311、312行注释掉,313行的return false改成return true,然后在tools目录下重新把srpc这个小工具编译出来看看,先感受下构建的用法🙏

@ChengYe9527
Copy link
Author

好的

@ChengYe9527
Copy link
Author

我看的只有master是有tools的,其他版本都没有

@holmes1412
Copy link
Contributor

是的,只有master分支有tools目录

@Barenboim
Copy link
Contributor

我在ubuntu 22.04上,无法复现这个问题。我感觉是getopt有什么行为不一致,或者我们调用方法有什么不太对。

@ChengYe9527
Copy link
Author

有在macos上安装吗?openssl怎么解决?

@Barenboim
Copy link
Contributor

mac上也测试过的。openssl我们默认已经安装,毕竟现场编译openssl还是太慢了。

@ChengYe9527
Copy link
Author

mac上也测过的。openssl我们默认已经安装,最终现场编译openssl还是太慢了。

openssl是什么版本呢?

@holmes1412
Copy link
Contributor

@ChengYe9527 可以直接使用brew install openssl
具体可以参考:sogou/workflow#150
注意macOS有自带的ssl,所以如果使用openssl的话,brew安装之后要按照它的提示建立链接。

@ChengYe9527
Copy link
Author

截屏2023-03-31 16 18 24

你好,我这边mac编译srpc报错

@holmes1412
Copy link
Contributor

不确定是你原先没有安装protobuf还是系统找默认路径的不统一,建议你可以源码安装一下protobuf。

参考:

git clone -b 3.20.x https://github.com/protocolbuffers/protobuf.git protobuf.3.20
cd protobuf.3.20
sh autogen.sh
./configure
make -j4
make install

@ChengYe9527
Copy link
Author

我装的 3.6

@ChengYe9527
Copy link
Author

w

不确定是你最初没有安装protobuf还是系统找到默认路径的不均匀,建议你可以用源码安装一下protobuf。

参考:

git clone -b 3.20.x https://github.com/protocolbuffers/protobuf.git protobuf.3.20
cd protobuf.3.20
sh autogen.sh
./configure
make -j4
make install

我装了protobuf还是报错

@holmes1412
Copy link
Contributor

是源码安装了还报错吗?可以把新的报错信息发给我看一下~

@ChengYe9527
Copy link
Author

是源码安装了还报错了吗?可以把新的报错信息发给我看一下~

截屏2023-03-31 17 49 34

@kedixa
Copy link
Contributor

kedixa commented Mar 31, 2023

@ChengYe9527
你好,你的处理器是Arm的吗,发一下 cat /proc/cpuinfo | head -n 30 的输出

编译一下下面的代码,并把输出发一下

#include <type_traits>
#include <iostream>

bool f() {
    return (char)-1 == (signed char)-1;
}
bool g() {
    return (char)-1 == (unsigned char)-1;
}

int main() {
    std::cout << f() << std::endl;
    std::cout << g() << std::endl;
    return 0;
}

@Barenboim
Copy link
Contributor

修了:d25cbfd

@Barenboim
Copy link
Contributor

#298

@ChengYe9527
Copy link
Author

cat /proc/cpuinfo | head -n 30

cat: /proc/cpuinfo: No such file or directory

代码输出

1
0

Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

@Barenboim
Copy link
Contributor

最新代码应该已经修复问题了!感谢。

@ChengYe9527
Copy link
Author

又在M1的mac上试过吗

是源代码安装了还报错了吗?可以把新的报错信息发给我看一下~

@holmes1412
Copy link
Contributor

@ChengYe9527 是的是一个getopt返回值原先我处理没有很细心的问题,已经修复了。麻烦再试一下,可以用你一开始的ubuntu20.04试试

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants