V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
haikea
V2EX  ›  C

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

  •  
  •   haikea · 2018-03-28 15:22:26 +08:00 · 2700 次点击
    这是一个创建于 2213 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    19 条回复    2018-03-30 07:18:08 +08:00
    soli
        1
    soli  
       2018-03-28 15:53:08 +08:00
    可以。前提是你的 C 代码里没有使用系统调用相关的函数。
    haikea
        2
    haikea  
    OP
       2018-03-28 16:31:22 +08:00
    @soli 没有啊,使用 string.h 这样的头文件不碍事吧
    soli
        3
    soli  
       2018-03-28 16:55:24 +08:00
    @haikea 那贴点错误提示看看?
    lalal0410
        4
    lalal0410  
       2018-03-28 17:03:02 +08:00
    完全用标准 c 写的,应该是可以跨平台的。。就怕你用了 Win 家的私货
    liangdi
        5
    liangdi  
       2018-03-28 17:28:25 +08:00
    show me the code
    wzhndd2
        6
    wzhndd2  
       2018-03-28 17:36:41 +08:00
    show your code
    koushiro
        7
    koushiro  
       2018-03-28 17:48:04 +08:00
    用的如果是 ANSI C 应该是没什么问题的
    matsuz
        8
    matsuz  
       2018-03-28 17:56:43 +08:00
    只要代码或者依赖的库里面没有系统调用相关的代码,或者用了一些特定编译器的私货,C 语言可以被视作是跨平台的
    Keyes
        9
    Keyes  
       2018-03-28 17:58:36 +08:00 via Android   ❤️ 1
    这些错误应该这样解决,改一下这里的函数和那里的逻辑就可以了

    提问的艺术


    贴代码贴错误吧,跨平台 c 还是要点小技巧
    Keyes
        10
    Keyes  
       2018-03-28 17:59:28 +08:00 via Android
    平台肯定是可以跨的,你给的资料,好吧基本上就没给
    waruqi
        11
    waruqi  
       2018-03-28 18:50:06 +08:00 via Android
    可以用跨平台的 c 库,https://github.com/tboox/tbox
    forestyuan
        12
    forestyuan  
       2018-03-28 21:29:02 +08:00
    不同厂家的编译器,对标准的支持程度不同,也会造成在 linux 上出现编译错误。
    we2ex
        13
    we2ex  
       2018-03-28 21:41:43 +08:00 via Android
    msvc 和 gcc 不一样的,先在 Windows 下用 gcc 编译一下试试
    we2ex
        14
    we2ex  
       2018-03-28 21:44:21 +08:00 via Android
    别说你按 vs 的提示用了 printf_s 这些玩意儿
    pkookp8
        15
    pkookp8  
       2018-03-29 01:06:34 +08:00 via Android
    标准 c 库是跨平台的,除非夹杂使用了系统调用或者包含了平台相关的头文件。错误这么多,还是贴个代码来的方便
    zonyitoo
        16
    zonyitoo  
       2018-03-29 08:27:10 +08:00
    连错误都没放出来,除了来吹水还能怎么办……
    haikea
        17
    haikea  
    OP
       2018-03-29 23:30:51 +08:00
    @soli 我看了,报了很多 string.h 内未定义参数的错,然后我在 windows 上追了一下,发现是在 sal.h 这个文件里定义的,但是在 linux 的 include 文件夹下没有这个头文件。还有其他很多头文件也没有,请问这两个平台的头文件是不通用的吗
    haikea
        18
    haikea  
    OP
       2018-03-29 23:35:05 +08:00
    @pkookp8 确实是很多头文件在 linux 上没有,不过都是 string.h 引用的啊,让我有点费解
    pkookp8
        19
    pkookp8  
       2018-03-30 07:18:08 +08:00 via Android
    @haikea show me the code
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3262 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:56 · PVG 20:56 · LAX 05:56 · JFK 08:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.