I see this problem too, on my Linux machine with
Rsubread master$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
It's solved by removing the 'inline' keyword at
Rsubread master$ git diff
diff --git a/src/LRMsorted-hashtable.c b/src/LRMsorted-hashtable.c
index e0eae63..ba89881 100644
--- a/src/LRMsorted-hashtable.c
+++ b/src/LRMsorted-hashtable.c
@@ -34,7 +34,7 @@
#define _gehash_hash(k) ((unsigned int)(k))
#define WITHOUT_CLUSTER_ORDERING 0
-inline struct LRMgehash_bucket * LRM_gehash_get_bucket(LRMgehash_t * the_table, LRMgehash_key_t key)
+struct LRMgehash_bucket * LRM_gehash_get_bucket(LRMgehash_t * the_table, LRMgehash_key_t key)
{
int bucket_number;
or by adding 'static'
Rsubread master$ git diff .
diff --git a/src/LRMsorted-hashtable.c b/src/LRMsorted-hashtable.c
index e0eae63..7599faf 100644
--- a/src/LRMsorted-hashtable.c
+++ b/src/LRMsorted-hashtable.c
@@ -34,7 +34,7 @@
#define _gehash_hash(k) ((unsigned int)(k))
#define WITHOUT_CLUSTER_ORDERING 0
-inline struct LRMgehash_bucket * LRM_gehash_get_bucket(LRMgehash_t * the_table, LRMgehash_key_t key)
+static inline struct LRMgehash_bucket * LRM_gehash_get_bucket(LRMgehash_t * the_table, LRMgehash_key_t key)
{
int bucket_number;
I have a vague recollection that this is because the compiler inlines and then removes the function from the .o file, but retains the annotation that it exists in the .so file. Removing 'inline' means that it's not inlined so still available; adding 'static' means that the function is not advertised as available. This [StackOverflow][1] link provides an entrez into this exciting world.
[1]: https://stackoverflow.com/questions/6312597/is-inline-without-static-or-extern-ever-useful-in-c99
Can you provide the complete screen output from your installation? The 'Rsubread.so' file is generated after the gcc compilation is successfully completed. If the gcc compilation failed then you wouldn't get the Rsubread.so file generated and Rsubread won't be loaded.
Sure, I'll re-run it in the morning and attach the output. Thank you--
Bioconductor won't let me paste the entire thing here. The output: https://pastebin.com/qGqH9Y0U
Thank you.
The 'Rsubread.so' file was successfully generated and the compilation seems to be OK. I dont know what caused the problem. Maybe try reinstall your R and then install Rsubread so you can install it in a fresh session.
Our R is compiled in a nonstandard way. Reinstalling to a fresh directory didn't help. I tried manually compiling Rsubread (downloading/extracting source code, running configure and gcc commands) and the Rsubread.so file has been generated, but I'm not sure where the "testing if installed package can be loaded" bit is hiding. My guess is that R isn't finding the .so file. Will continue looking.
hello, I meet the same problem. could you please show me the detail of compiling Rsubread?
Unfortunately I haven't been able to get it to run. I also tried installing it to our Ubuntu Linux environment which is standard, using R 3.5.0 (the code I posted above is CentOS with an unusual configuration). Same error in both places. It looks like something's wrong with the library file.