By the way,  the emcc compile command  is emcc -g getip.c -o getip.js.  
 The emcc version is newest because I just installed it yesterday.

On Thursday, May 10, 2018 at 9:34:16 AM UTC+8, zhatian diao wrote:
>
> thanks for your reply!
>
> Here is the c source code:
>
> ---------------------------------------------
>
> #include <arpa/inet.h>
> #include <sys/socket.h>
> #include <netdb.h>
> #include <ifaddrs.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <unistd.h>
> #include <string.h>
>
> char * myFunction ();
>
> int main(int argc, char *argv[])
> {
>         char *str = myFunction();
>         printf("%s\n", str);
>         return 0;
>
> }
>
> char * myFunction () {
>
>          char *sub_str = malloc(1100 * sizeof(char));
>         //char* sub_str = new char[100];
>         char *split = ":";
>         char *end = ";";
>         struct ifaddrs *ifaddr, *ifa;
>         int family, s;
>         int x=0;
>         char host[NI_MAXHOST];
>
>         if (getifaddrs(&ifaddr) == -1)
>         {
>                 perror("getifaddrs");
>                 exit(EXIT_FAILURE);
>         }
>
>
>         for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next)
>         {
>                 if (ifa->ifa_addr == NULL)
>                         continue;
>
>                 s=getnameinfo(ifa->ifa_addr,sizeof(struct 
> sockaddr_in),host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
>
>                 if(ifa->ifa_addr->sa_family==AF_INET)
>                 {
>                         if (s != 0)
>                         {
>                                 printf("getnameinfo() failed: %s\n", 
> gai_strerror(s));
>                                 exit(EXIT_FAILURE);
>                         }
>                         if(x==0){
>                                 strcpy(sub_str, ifa->ifa_name);
>                                 strcat(sub_str, split);
>                                 strcat(sub_str, host);
>                                 strcat(sub_str, end);
>                         }else{
>                                 strcat(sub_str, ifa->ifa_name);
>                                 strcat(sub_str, split);
>                                 strcat(sub_str, host);
>                                 strcat(sub_str, end);
>
>                         }
>                         x++;
>                 }
>         }
>
>         int len = strlen(sub_str);
>         sub_str[len - 1] = '\0';
>         freeifaddrs(ifaddr);
>         return sub_str;
>
> }
>
>
> ---------------------------------------------------
>
> and the command-line flags is  gcc -o getip getip.c
>
> On Thursday, May 10, 2018 at 12:00:00 AM UTC+8, Brion Vibber wrote:
>>
>> On Wed, May 9, 2018, 6:28 AM zhatian diao <[email protected]> wrote:
>>
>>>     Hello everyone , I m new to emcc.
>>>    
>>>     Today I followed the user guide to install emcc and run the hello 
>>> world example successfully.
>>>
>>
>> Welcome! :)
>>  
>>
>>>     However, things went wrong when I tried to compile another c file to 
>>> js file.   
>>>
>>>     At first, I got an error 
>>>
>>>        testfiles/getip.c:10:17: fatal error: 'linux/if_link.h' file not 
>>> found
>>>        #include <linux/if_link.h>
>>>                 ^~~~~~~~~~~~~~~~~
>>>       1 error generated.
>>>       ERROR:root:compiler frontend failed to generate LLVM bitcode, 
>>> halting
>>>
>>>     The strange thing is that I compiled the c file early with gcc 
>>> without error. It can be run successfully.
>>>
>>
>> emscripten is not Linux, and does not include Linux-specific kernel 
>> interfaces. Think of it as cross-compiling to another operating system... 
>> If your source code needs linux/if_link.h for Linux-specific code, it will 
>> need to be modified to build for emscripten.
>>
>> Note that the networking support in emscripten is limited because the web 
>> runtime limited what is possible; you can't look up IP addresses or connect 
>> to arbitrary hosts or ports. Make sure your test program is something that 
>> would actually work.
>>  
>>
>>>     So I changed my code and removed "<linux/if_link.h>". I got another 
>>> compile warning:  warning:unresolved symbol: htons. 
>>>
>>
>>     It s source c code can also be compiled with gcc.
>>>
>>>     Is there anything I missed or unconfigured?
>>>
>>>
>>>
>>>
>>>     Compile enviroment : ubuntu
>>>
>>>     head include: 
>>>
>>>        #include <arpa/inet.h>
>>>        #include <sys/socket.h>
>>>        #include <netdb.h>
>>>        #include <ifaddrs.h>
>>>        #include <stdio.h>
>>>        #include <stdlib.h>
>>>        #include <unistd.h>
>>>        #include <string.h>
>>>        #include <linux/if_link.h>
>>>
>>
>> htons is defined in arpa/inet.h which you're also including, so it should 
>> work. Can you provide a minimal test case? (Small complete .c file that can 
>> be compiled, and the command-line flags you're using to compile it)
>>  
>> -- brion
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to