小白请教个问题, win 环境的 c 项目,能拿到 Linux 下编译生成动态库吗

2018 年 3 月 28 日
 haikea

老板让搞 c,我用 vs 在 win 下是能编译和调用的,然后把项目放到 linux 上生成 so 就报错了,一堆错。我只想确定是否能这么做,我好有个排除错误的思路

3534 次点击
所在节点    C
19 条回复
soli
2018 年 3 月 28 日
可以。前提是你的 C 代码里没有使用系统调用相关的函数。
haikea
2018 年 3 月 28 日
@soli 没有啊,使用 string.h 这样的头文件不碍事吧
soli
2018 年 3 月 28 日
@haikea 那贴点错误提示看看?
lalal0410
2018 年 3 月 28 日
完全用标准 c 写的,应该是可以跨平台的。。就怕你用了 Win 家的私货
liangdi
2018 年 3 月 28 日
show me the code
wzhndd2
2018 年 3 月 28 日
show your code
koushiro
2018 年 3 月 28 日
用的如果是 ANSI C 应该是没什么问题的
matsuz
2018 年 3 月 28 日
只要代码或者依赖的库里面没有系统调用相关的代码,或者用了一些特定编译器的私货,C 语言可以被视作是跨平台的
Keyes
2018 年 3 月 28 日
这些错误应该这样解决,改一下这里的函数和那里的逻辑就可以了

提问的艺术


贴代码贴错误吧,跨平台 c 还是要点小技巧
Keyes
2018 年 3 月 28 日
平台肯定是可以跨的,你给的资料,好吧基本上就没给
waruqi
2018 年 3 月 28 日
可以用跨平台的 c 库,https://github.com/tboox/tbox
forestyuan
2018 年 3 月 28 日
不同厂家的编译器,对标准的支持程度不同,也会造成在 linux 上出现编译错误。
we2ex
2018 年 3 月 28 日
msvc 和 gcc 不一样的,先在 Windows 下用 gcc 编译一下试试
we2ex
2018 年 3 月 28 日
别说你按 vs 的提示用了 printf_s 这些玩意儿
pkookp8
2018 年 3 月 29 日
标准 c 库是跨平台的,除非夹杂使用了系统调用或者包含了平台相关的头文件。错误这么多,还是贴个代码来的方便
zonyitoo
2018 年 3 月 29 日
连错误都没放出来,除了来吹水还能怎么办……
haikea
2018 年 3 月 29 日
@soli 我看了,报了很多 string.h 内未定义参数的错,然后我在 windows 上追了一下,发现是在 sal.h 这个文件里定义的,但是在 linux 的 include 文件夹下没有这个头文件。还有其他很多头文件也没有,请问这两个平台的头文件是不通用的吗
haikea
2018 年 3 月 29 日
@pkookp8 确实是很多头文件在 linux 上没有,不过都是 string.h 引用的啊,让我有点费解
pkookp8
2018 年 3 月 30 日
@haikea show me the code

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/442151

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX